<!DOCTYPE html>
<html lang="en" dir="ltr" prefix="bibo: http://purl.org/ontology/bibo/" typeof="bibo:Document">
<head>
<title>JSON-LD 1.0</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--
  === NOTA BENE ===
  For the three scripts below, if your spec resides on dev.w3 you can check them
  out in the same tree and use relative links so that they'll work offline,
  -->



<style type="text/css">
  .diff { font-weight:bold; color:#0a3; }
  table, thead, tr, td { padding: 5px; border-width: 1px; border-spacing: 0px; border-style: solid; border-collapse: collapse;}
</style>
<style>/*****************************************************************
 * ReSpec 3 CSS
 * Robin Berjon - http://berjon.com/
 *****************************************************************/

/* --- INLINES --- */
em.rfc2119 { 
    text-transform:     lowercase;
    font-variant:       small-caps;
    font-style:         normal;
    color:              #900;
}

h1 acronym, h2 acronym, h3 acronym, h4 acronym, h5 acronym, h6 acronym, a acronym,
h1 abbr, h2 abbr, h3 abbr, h4 abbr, h5 abbr, h6 abbr, a abbr {
    border: none;
}

dfn {
    font-weight:    bold;
}

a.internalDFN {
    color:  inherit;
    border-bottom:  1px solid #99c;
    text-decoration:    none;
}

a.externalDFN {
    color:  inherit;
    border-bottom:  1px dotted #ccc;
    text-decoration:    none;
}

a.bibref {
    text-decoration:    none;
}

cite .bibref {
    font-style: normal;
}

code {
    color:  #ff4500;
}


/* --- --- */
ol.algorithm { counter-reset:numsection; list-style-type: none; }
ol.algorithm li { margin: 0.5em 0; }
ol.algorithm li:before { font-weight: bold; counter-increment: numsection; content: counters(numsection, ".") ") "; }

/* --- TOC --- */
.toc a, .tof a {
    text-decoration:    none;
}

a .secno, a .figno {
    color:  #000;
}

ul.tof, ol.tof {
    list-style: none outside none;
}

.caption {
    margin-top: 0.5em;
    font-style:   italic;
}

/* --- TABLE --- */
table.simple {
    border-spacing: 0;
    border-collapse:    collapse;
    border-bottom:  3px solid #005a9c;
}

.simple th {
    background: #005a9c;
    color:  #fff;
    padding:    3px 5px;
    text-align: left;
}

.simple th[scope="row"] {
    background: inherit;
    color:  inherit;
    border-top: 1px solid #ddd;
}

.simple td {
    padding:    3px 10px;
    border-top: 1px solid #ddd;
}

.simple tr:nth-child(even) {
    background: #f0f6ff;
}

/* --- DL --- */
.section dd > p:first-child {
    margin-top: 0;
}

.section dd > p:last-child {
    margin-bottom: 0;
}

.section dd {
    margin-bottom:  1em;
}

.section dl.attrs dd, .section dl.eldef dd {
    margin-bottom:  0;
}
</style><style>/* --- EXAMPLES --- */
div.example-title {
    min-width: 7.5em;
    color: #b9ab2d;
}
div.example-title span {
    text-transform: uppercase;   
}
aside.example, div.example, div.illegal-example {
    padding: 0.5em;
    margin: 1em 0;
    position: relative;
    clear: both;
}
div.illegal-example { color: red }
div.illegal-example p { color: black }
aside.example, div.example {
    padding: .5em;
    border-left-width: .5em;
    border-left-style: solid;
    border-color: #e0cb52;
    background: #fcfaee;    
}

aside.example div.example {
    border-left-width: .1em;
    border-color: #999;
    background: #fff;
}
aside.example div.example div.example-title {
    color: #999;
}
</style><style>/* --- ISSUES/NOTES --- */
div.issue-title, div.note-title {
    padding-right:  1em;
    min-width: 7.5em;
    color: #b9ab2d;
}
div.issue-title { color: #e05252; }
div.note-title { color: #52e052; }
div.issue-title span, div.note-title span {
    text-transform: uppercase;
}
div.note, div.issue {
    margin-top: 1em;
    margin-bottom: 1em;
}
.note > p:first-child, .issue > p:first-child { margin-top: 0 }
.issue, .note {
    padding: .5em;
    border-left-width: .5em;
    border-left-style: solid;
}
div.issue, div.note {
    padding: 0.5em;
    margin: 1em 0;
    position: relative;
    clear: both;
}
span.note, span.issue { padding: .1em .5em .15em; }

.issue {
    border-color: #e05252;
    background: #fbe9e9;
}
.note {
    border-color: #52e052;
    background: #e9fbe9;
}


</style><link rel="stylesheet" href="http://www.w3.org/community/src/css/spec/cg-final.css"><!--[if lt IE 9]><script src='http://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--><style type='text/css'>
.diff-old-a {
  font-size: smaller;
  color: red;
}

.diff-new { background-color: yellow; }
.diff-chg { background-color: lime; }
.diff-new:before,
.diff-new:after
    { content: "\2191" }
.diff-chg:before, .diff-chg:after
    { content: "\2195" }
.diff-old { text-decoration: line-through; background-color: #FBB; }
.diff-old:before,
.diff-old:after
    { content: "\2193" }
:focus { border: thin red solid}
</style>
</head>


<body>
<div class="head">
<p>
<a href="http://www.w3.org/">
<img width="72" height="48" src="http://www.w3.org/Icons/w3c_home" alt="W3C">
</a>
</p>
<h1 class="title" id="title">
JSON-LD
<del class="diff-old">Syntax
</del>
1.0
</h1>
<h2 id="subtitle">
A
<del class="diff-old">JSON
</del>
<ins class="diff-chg">JSON-based
</ins>
Serialization
for
<del class="diff-old">Linking
</del>
<ins class="diff-chg">Linked
</ins>
Data
</h2>
<del class="diff-old">W3C
Editor's
Draft
25
December
2012
</del>
<h2 id="final-community-group-specification-02-february-2013">
<ins class="diff-chg">Final
Community
Group
Specification
02
February
2013
</ins>
</h2>
<dl>
<dt>
<del class="diff-old">This
version:
http://dvcs.w3.org/hg/json-ld/raw-file/default/spec/ED/json-ld-syntax/20121225/index.html
Latest
published
version:
http://www.w3.org/TR/json-ld-syntax/
</del>
Latest
editor's
draft:
</dt>
<dd>
<a href="http://dvcs.w3.org/hg/json-ld/raw-file/default/spec/latest/json-ld-syntax/index.html">
http://dvcs.w3.org/hg/json-ld/raw-file/default/spec/latest/json-ld-syntax/index.html
</a>
</dd>
<dt>
Editors:
</dt>
<dd rel="bibo:editor" inlist="">
<span typeof="foaf:Person">
<a rel="foaf:homepage" property="foaf:name" content="Manu Sporny" href="http://manu.sporny.org/">
Manu
Sporny
</a>,
<a rel="foaf:workplaceHomepage" href="http://digitalbazaar.com/">
Digital
Bazaar
</a>
</span>
</dd>
<dd rel="bibo:editor" inlist="">
<span typeof="foaf:Person">
<a rel="foaf:homepage" property="foaf:name" content="Gregg Kellogg" href="http://greggkellogg.net/">
Gregg
Kellogg
</a>,
<a rel="foaf:workplaceHomepage" href="http://kellogg-assoc.com/">
Kellogg
Associates
</a>
</span>
</dd>
<dd rel="bibo:editor" inlist="">
<span typeof="foaf:Person">
<a rel="foaf:homepage" property="foaf:name" content="Markus Lanthaler" href="http://www.markus-lanthaler.com/">
Markus
Lanthaler
</a>,
<a rel="foaf:workplaceHomepage" href="http://www.tugraz.at/">
Graz
University
of
Technology
</a>
</span>
</dd>
<dt>
Authors:
</dt>
<dd rel="dcterms:contributor">
<span typeof="foaf:Person">
<a rel="foaf:homepage" property="foaf:name" content="Manu Sporny" href="http://digitalbazaar.com/">
Manu
Sporny
</a>,
<a rel="foaf:workplaceHomepage" href="http://digitalbazaar.com/">
Digital
Bazaar
</a>
</span>
</dd>
<dd rel="dcterms:contributor">
<span typeof="foaf:Person">
<a rel="foaf:homepage" property="foaf:name" content="Dave Longley" href="http://digitalbazaar.com/">
Dave
Longley
</a>,
<a rel="foaf:workplaceHomepage" href="http://digitalbazaar.com/">
Digital
Bazaar
</a>
</span>
</dd>
<dd rel="dcterms:contributor">
<span typeof="foaf:Person">
<a rel="foaf:homepage" property="foaf:name" content="Gregg Kellogg" href="http://greggkellogg.net/">
Gregg
Kellogg
</a>,
<a rel="foaf:workplaceHomepage" href="http://kellogg-assoc.com/">
Kellogg
Associates
</a>
</span>
</dd>
<dd rel="dcterms:contributor">
<span typeof="foaf:Person">
<a rel="foaf:homepage" property="foaf:name" content="Markus Lanthaler" href="http://www.markus-lanthaler.com/">
Markus
Lanthaler
</a>,
<a rel="foaf:workplaceHomepage" href="http://www.tugraz.at/">
Graz
University
of
Technology
</a>
</span>
</dd>
<dd rel="dcterms:contributor">
<span typeof="foaf:Person">
<del class="diff-old">Mark
Birbeck
,
Backplane
Ltd.
</del>
<a rel="foaf:homepage" property="foaf:name" content="Niklas Lindström" href="http://neverspace.net/">
<ins class="diff-chg">Niklas
Lindström
</ins>
</a>
</span>
</dd>
</dl>
<p>
This
document
is
also
available
in
this
non-normative
format:
<a href="diff-20121225.html">
diff
to
previous
version
</a>
</p>
<p class="copyright">
<a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">
Copyright
</a>
©
<del class="diff-old">2010-2012
W3C
®
(
MIT
,
ERCIM
,
Keio
</del>
<ins class="diff-chg">2010-2013
the
Contributors
to
the
JSON-LD
1.0
Specification,
published
by
the
</ins><a href="http://www.w3.org/2011/rdf-wg/"><ins class="diff-chg">
RDF
Working
Group
</ins>
</a>
<del class="diff-old">),
All
Rights
Reserved.
</del>
<ins class="diff-chg">under
the
</ins><a href="https://www.w3.org/community/about/agreements/fsa/">
W3C
<del class="diff-old">liability
,
trademark
and
document
use
</del>
<ins class="diff-chg">Community
Final
Specification
Agreement
(FSA)
</ins></a>.<ins class="diff-chg">
A
human-readable
</ins><a href="http://www.w3.org/community/about/agreements/fsa-deed/"><ins class="diff-chg">
summary
</ins>
</a>
<del class="diff-old">rules
apply.
</del>
<ins class="diff-chg">is
available.
</ins>
</p>
<hr>
</div>
<section id="abstract" class="introductory" property="dcterms:abstract" datatype="" typeof="bibo:Chapter" resource="#abstract" rel="bibo:chapter">
<h2>
Abstract
</h2>
<p>
JSON
has
proven
to
be
a
highly
useful
object
serialization
and
messaging
format.
In
an
attempt
to
harmonize
the
representation
of
<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
Linked
Data
</a>
in
JSON,
this
specification
outlines
a
common
JSON
representation
format
for
expressing
directed
graphs;
mixing
both
Linked
Data
and
non-Linked
Data
in
a
single
document.
</p>
</section>
<section id="sotd" class="introductory" typeof="bibo:Chapter" resource="#sotd" rel="bibo:chapter">
<h2>
Status
of
This
Document
</h2>
<p>
This
<del class="diff-old">section
describes
the
status
of
this
document
at
</del>
<ins class="diff-chg">specification
was
published
by
</ins>
the
<del class="diff-old">time
of
its
publication.
Other
documents
may
supersede
this
document.
A
list
of
current
</del>
<a href="http://www.w3.org/2011/rdf-wg/">
<ins class="diff-chg">RDF
Working
Group
</ins></a>.<ins class="diff-chg">
It
is
not
a
</ins>
W3C
<del class="diff-old">publications
and
</del>
<ins class="diff-chg">Standard
nor
is
it
on
</ins>
the
<del class="diff-old">latest
revision
of
this
technical
report
can
be
found
in
</del>
<ins class="diff-chg">W3C
Standards
Track.
Please
note
that
under
</ins>
the
<a href="https://www.w3.org/community/about/agreements/final/">
W3C
<del class="diff-old">technical
reports
index
</del>
<ins class="diff-chg">Community
Final
Specification
Agreement
(FSA)
</ins>
</a>
<del class="diff-old">at
http://www.w3.org/TR/.
</del>
<ins class="diff-chg">other
conditions
apply.
Learn
more
about
</ins><a href="http://www.w3.org/community/"><ins class="diff-chg">
W3C
Community
and
Business
Groups
</ins></a>.
</p>
<p>
This
document
has
been
under
development
for
over
<del class="diff-old">20
</del>
<ins class="diff-chg">25
</ins>
months
in
the
JSON
for
Linking
Data
Community
Group.
The
document
has
recently
been
transferred
to
the
RDF
Working
Group
for
review,
improvement,
and
<del class="diff-old">publication
along
the
Recommendation
track.
</del>
<ins class="diff-chg">publication.
</ins>
The
specification
has
undergone
significant
development,
review,
and
changes
during
the
course
of
the
last
<del class="diff-old">20
</del>
<ins class="diff-chg">25
</ins>
months.
</p>
<p>
There
are
several
independent
<a href="http://json-ld.org/#impl">
interoperable
implementations
</a>
of
this
specification.
There
is
a
<a href="https://github.com/json-ld/json-ld.org/tree/main/test-suite">
fairly
complete
test
suite
</a>
and
a
<a href="http://json-ld.org/playground/">
live
JSON-LD
editor
</a>
that
is
capable
of
demonstrating
the
features
described
in
this
document.
While
development
on
implementations,
the
test
suite
and
the
live
editor
will
continue,
they
are
believed
to
be
mature
enough
to
be
integrated
into
a
non-production
system
at
this
point
in
time
with
the
expectation
that
they
could
be
used
in
a
production
system
within
the
next
year.
</p>
<p>
There
are
a
number
of
ways
that
one
may
participate
in
the
development
of
this
specification:
</p>
<ul>
<li>
If
you
want
to
make
sure
that
your
feedback
is
formally
addressed
by
the
RDF
Working
Group,
you
should
send
it
to
public-rdf-comments:
<a href="http://lists.w3.org/Archives/Public/public-rdf-comments/">
public-rdf-comments@w3.org
</a>
</li>
<li>
Ad-hoc
technical
discussion
primarily
occurs
on
the
public
community
mailing
list:
<a href="http://lists.w3.org/Archives/Public/public-linked-json/">
public-linked-json@w3.org
</a>
</li>
<li>
<a href="http://json-ld.org/minutes/">
Public
JSON-LD
Community
Group
teleconferences
</a>
are
held
on
Tuesdays
at
1500UTC
every
week.
</li>
<li>
RDF
Working
Group
teleconferences
are
held
on
Wednesdays
at
1500UTC
every
week.
Participation
is
limited
to
RDF
Working
Group
members.
</li>
<li>
Specification
bugs
and
issues
should
be
reported
in
the
<a href="https://github.com/json-ld/json-ld.org/issues">
issue
tracker
</a>
if
you
do
not
want
to
send
an
e-mail
to
the
public-rdf-comments
mailing
list.
</li>
<li>
<a href="https://github.com/json-ld/json-ld.org/tree/main/spec">
Source
code
</a>
for
the
specification
can
be
found
on
Github.
</li>
<li>
The
<a href="http://webchat.freenode.net/?channels=json-ld">
#json-ld
</a>
IRC
channel
is
available
for
real-time
discussion
on
irc.freenode.net.
</li>
</ul>
<del class="diff-old">This
document
was
published
by
the
RDF
Working
Group
as
an
Editor's
Draft.
If
you
wish
to
make
comments
regarding
this
document,
please
send
them
to
public-rdf-comments@w3.org
(
subscribe
,
archives
).
All
feedback
is
welcome.
Publication
as
an
Editor's
Draft
does
not
imply
endorsement
by
the
W3C
Membership.
This
is
a
draft
document
and
may
be
updated,
replaced
or
obsoleted
by
other
documents
at
any
time.
It
is
inappropriate
to
cite
this
document
as
other
than
work
in
progress.
This
document
was
produced
by
a
group
operating
under
the
5
February
2004
W3C
Patent
Policy
.
W3C
maintains
a
public
list
of
any
patent
disclosures
made
in
connection
with
the
deliverables
of
the
group;
that
page
also
includes
instructions
for
disclosing
a
patent.
An
individual
who
has
actual
knowledge
of
a
patent
which
the
individual
believes
contains
Essential
Claim(s)
must
disclose
the
information
in
accordance
with
section
6
of
the
W3C
Patent
Policy
.
</del>
</section>
<section id="toc">
<h2 class="introductory">
Table
of
Contents
</h2>
<ul class="toc">
<li class="tocline">
<a href="#introduction" class="tocxref">
<span class="secno">
1.
</span>
Introduction
</a>
<ul class="toc">
<li class="tocline">
<a href="#how-to-read-this-document" class="tocxref">
<span class="secno">
1.1
</span>
How
to
Read
this
Document
</a>
</li>
</ul>
</li>
<li class="tocline">
<a href="#design-goals-and-rationale" class="tocxref">
<span class="secno">
2.
</span>
Design
Goals
and
Rationale
</a>
</li>
<li class="tocline">
<a href="#terminology" class="tocxref">
<span class="secno">
3.
</span>
Terminology
</a>
<ul class="toc">
<li class="tocline">
<a href="#general-terminology" class="tocxref">
<span class="secno">
3.1
</span>
General
Terminology
</a>
</li>
<li class="tocline">
<a href="#syntax-tokens-and-keywords" class="tocxref">
<span class="secno">
3.2
</span>
Syntax
Tokens
and
Keywords
</a>
</li>
</ul>
</li>
<li class="tocline">
<a href="#conformance" class="tocxref">
<span class="secno">
4.
</span>
Conformance
</a>
</li>
<li class="tocline">
<a href="#basic-concepts" class="tocxref">
<span class="secno">
5.
</span>
Basic
Concepts
</a>
<ul class="toc">
<li class="tocline">
<a href="#the-context" class="tocxref">
<span class="secno">
5.1
</span>
The
Context
</a>
</li>
<li class="tocline">
<del class="diff-old">5.2
From
JSON
to
JSON-LD
</del>
<a href="#iris" class="tocxref">
<span class="secno">
<del class="diff-old">5.3
</del>
<ins class="diff-chg">5.2
</ins>
</span>
IRIs
</a>
</li>
<li class="tocline">
<a href="#node-identifiers" class="tocxref">
<span class="secno">
<del class="diff-old">5.4
</del>
<ins class="diff-chg">5.3
</ins>
</span>
Node
Identifiers
</a>
</li>
<li class="tocline">
<a href="#specifying-the-type" class="tocxref">
<span class="secno">
<del class="diff-old">5.5
</del>
<ins class="diff-chg">5.4
</ins>
</span>
Specifying
the
Type
</a>
</li>
<del class="diff-old">5.6
String
Internationalization
5.7
JSON-LD
Syntax
</del>
</ul>
</li>
<li class="tocline">
<a href="#advanced-concepts" class="tocxref">
<span class="secno">
6.
</span>
Advanced
Concepts
</a>
<ul class="toc">
<li class="tocline">
<a href="#compact-iris" class="tocxref">
<span class="secno">
6.1
</span>
Compact
IRIs
</a>
</li>
<li class="tocline">
<a href="#typed-values" class="tocxref">
<span class="secno">
6.2
</span>
Typed
Values
</a>
</li>
<li class="tocline">
<a href="#type-coercion" class="tocxref">
<span class="secno">
6.3
</span>
<del class="diff-old">Language-tagged
Strings
</del>
<ins class="diff-chg">Type
Coercion
</ins>
</a>
</li>
<li class="tocline">
<a href="#advanced-context-usage" class="tocxref">
<span class="secno">
6.4
</span>
<del class="diff-old">Referencing
Contexts
from
</del>
<ins class="diff-chg">Advanced
Context
Usage
</ins></a><ul class="toc"><li class="tocline"><a href="#interpreting-json-as-json-ld" class="tocxref"><span class="secno"><ins class="diff-chg">
6.4.1
</ins></span><ins class="diff-chg">
Interpreting
</ins>
JSON
<del class="diff-old">Documents
</del>
<ins class="diff-chg">as
JSON-LD
</ins>
</a>
</li>
</ul>
</li>
<li class="tocline">
<a href="#string-internationalization" class="tocxref">
<span class="secno">
6.5
</span>
<del class="diff-old">Expanded
Term
Definition
</del>
<ins class="diff-chg">String
Internationalization
</ins>
</a>
</li>
<li class="tocline">
<a href="#overriding-vocab" class="tocxref">
<span class="secno">
6.6
</span>
<del class="diff-old">Type
Coercion
</del>
<ins class="diff-chg">Overriding
@vocab
</ins>
</a>
</li>
<li class="tocline">
<a href="#property-generators" class="tocxref">
<span class="secno">
6.7
</span>
Property
Generators
</a>
</li>
<li class="tocline">
<a href="#iri-expansion-within-a-context" class="tocxref">
<span class="secno">
6.8
</span>
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
Expansion
Within
a
Context
</a>
</li>
<li class="tocline">
<a href="#sets-and-lists" class="tocxref">
<span class="secno">
6.9
</span>
Sets
and
Lists
</a>
</li>
<li class="tocline">
<a href="#embedding" class="tocxref">
<span class="secno">
6.10
</span>
Embedding
</a>
</li>
<li class="tocline">
<a href="#named-graphs" class="tocxref">
<span class="secno">
6.11
</span>
Named
Graphs
</a>
</li>
<li class="tocline">
<a href="#identifying-blank-nodes" class="tocxref">
<span class="secno">
6.12
</span>
Identifying
Blank
Nodes
</a>
</li>
<li class="tocline">
<a href="#aliasing-keywords" class="tocxref">
<span class="secno">
6.13
</span>
Aliasing
Keywords
</a>
</li>
<li class="tocline">
<a href="#expanded-document-form" class="tocxref">
<span class="secno">
6.14
</span>
<del class="diff-old">Data
Annotations
</del>
<ins class="diff-chg">Expanded
Document
Form
</ins>
</a>
</li>
<li class="tocline">
<a href="#compact-document-form" class="tocxref">
<span class="secno">
6.15
</span>
<del class="diff-old">Explicitly
Ignoring
Data
6.16
Expanded
</del>
<ins class="diff-chg">Compact
</ins>
Document
Form
</a>
</li>
<li class="tocline">
<a href="#data-indexing" class="tocxref">
<span class="secno">
<del class="diff-old">6.17
</del>
<ins class="diff-chg">6.16
</ins>
</span>
<del class="diff-old">Compact
Document
Form
</del>
<ins class="diff-chg">Data
Indexing
</ins>
</a>
</li>
</ul>
</li>
<li class="tocline">
<a href="#data-model" class="tocxref">
<span class="secno">
A.
</span>
Data
Model
</a>
</li>
<li class="tocline">
<a href="#json-ld-grammar" class="tocxref">
<span class="secno">
B.
</span>
JSON-LD
Grammar
</a>
<ul class="toc">
<li class="tocline">
<a href="#grammar-node-object" class="tocxref">
<span class="secno">
B.1
</span>
Node
Object
</a>
</li>
<li class="tocline">
<a href="#grammar-term-reference" class="tocxref">
<span class="secno">
B.2
</span>
Term
</a>
</li>
<li class="tocline">
<a href="#grammar-language-map" class="tocxref">
<span class="secno">
B.3
</span>
Language
Map
</a>
</li>
<li class="tocline">
<a href="#grammar-index-map" class="tocxref">
<span class="secno">
B.4
</span>
<del class="diff-old">Annotation
</del>
<ins class="diff-chg">Index
</ins>
Map
</a>
</li>
<li class="tocline">
<a href="#grammar-expanded-values" class="tocxref">
<span class="secno">
B.5
</span>
Expanded
Values
</a>
</li>
<li class="tocline">
<a href="#grammar-set-list" class="tocxref">
<span class="secno">
B.6
</span>
List
and
Set
Values
</a>
</li>
<li class="tocline">
<a href="#grammar-context" class="tocxref">
<span class="secno">
B.7
</span>
Context
Definition
</a>
</li>
</ul>
</li>
<li class="tocline">
<a href="#relationship-to-rdf" class="tocxref">
<span class="secno">
C.
</span>
Relationship
to
RDF
</a>
</li>
<li class="tocline">
<a href="#relationship-to-other-linked-data-formats" class="tocxref">
<span class="secno">
D.
</span>
Relationship
to
Other
Linked
Data
Formats
</a>
<ul class="toc">
<li class="tocline">
<a href="#turtle" class="tocxref">
<span class="secno">
D.1
</span>
Turtle
</a>
<ul class="toc">
<li class="tocline">
<a href="#prefix-definitions" class="tocxref">
<span class="secno">
D.1.1
</span>
Prefix
definitions
</a>
</li>
<li class="tocline">
<a href="#embedding-1" class="tocxref">
<span class="secno">
D.1.2
</span>
Embedding
</a>
</li>
<li class="tocline">
<a href="#lists" class="tocxref">
<span class="secno">
D.1.3
</span>
Lists
</a>
</li>
</ul>
</li>
<li class="tocline">
<a href="#rdfa" class="tocxref">
<span class="secno">
D.2
</span>
RDFa
</a>
</li>
<li class="tocline">
<a href="#microformats" class="tocxref">
<span class="secno">
D.3
</span>
Microformats
</a>
</li>
<li class="tocline">
<a href="#microdata" class="tocxref">
<span class="secno">
D.4
</span>
Microdata
</a>
</li>
</ul>
</li>
<li class="tocline">
<a href="#iana-considerations" class="tocxref">
<span class="secno">
E.
</span>
IANA
Considerations
</a>
</li>
<li class="tocline">
<a href="#acknowledgements" class="tocxref">
<span class="secno">
F.
</span>
Acknowledgements
</a>
</li>
<li class="tocline">
<a href="#references" class="tocxref">
<span class="secno">
G.
</span>
References
</a>
<ul class="toc">
<li class="tocline">
<a href="#normative-references" class="tocxref">
<span class="secno">
G.1
</span>
Normative
references
</a>
</li>
<li class="tocline">
<a href="#informative-references" class="tocxref">
<span class="secno">
G.2
</span>
Informative
references
</a>
</li>
</ul>
</li>
</ul>
</section>
<section class="informative" id="introduction">
<h2>
<span class="secno">
1.
</span>
Introduction
</h2>
<p>
<em>
This
section
is
non-normative.
</em>
</p>
<p>
<dfn title="linked_data" id="dfn-linked_data">
Linked
Data
</dfn>
is
a
technique
for
creating
a
network
of
inter-connected
data
across
different
documents
and
Web
sites.
In
general,
Linked
Data
has
four
properties:
<del class="diff-old">1)
it
</del>
<ins class="diff-chg">1)&nbsp;it
</ins>
uses
<a class="tref internalDFN" title="iri" href="#dfn-iri">
IRIs
</a>
to
name
things;
<del class="diff-old">2)
it
</del>
<ins class="diff-chg">2)&nbsp;it
</ins>
uses
HTTP
<a class="tref internalDFN" title="iri" href="#dfn-iri">
IRIs
</a>
for
those
names;
<del class="diff-old">3)
the
</del>
<ins class="diff-chg">3)&nbsp;the
</ins>
name
<a class="tref internalDFN" title="iri" href="#dfn-iri">
IRIs
</a>,
when
dereferenced,
provide
more
information
about
the
name;
and
<del class="diff-old">4)
the
</del>
<ins class="diff-chg">4)&nbsp;the
</ins>
data
expresses
links
to
data
on
other
Web
sites.
These
properties
allow
data
published
on
the
Web
to
work
much
like
Web
pages
do
today.
One
can
start
at
one
piece
of
Linked
Data,
and
follow
the
links
to
other
pieces
of
data
that
are
hosted
on
different
sites
across
the
Web.
</p>
<p>
JSON-LD
is
designed
as
a
lightweight
syntax
to
express
<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
Linked
Data
</a>
in
JSON
[
<cite>
<a class="bibref" href="#bib-RFC4627">
RFC4627
</a>
</cite>
].
It
is
primarily
intended
to
be
a
way
to
use
Linked
Data
in
Web-based
programming
environments.
It
is
also
useful
when
building
interoperable
Web
services
and
when
storing
Linked
Data
in
JSON-based
storage
engines.
Since
JSON-LD
is
100%
compatible
with
JSON
the
large
number
of
JSON
parsers
and
libraries
available
today
can
be
reused.
Additionally
to
all
the
features
JSON
provides,
JSON-LD
introduces:
</p>
<ul>
<li>
a
universal
identifier
mechanism
for
<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
JSON
objects
</a>
via
the
use
of
<a class="tref internalDFN" title="iri" href="#dfn-iri">
IRIs
</a>,
</li>
<li>
a
way
to
disambiguate
the
keys
used
between
multiple
JSON
documents
by
mapping
them
to
<a class="tref internalDFN" title="iri" href="#dfn-iri">
IRIs
</a>
via
a
<a class="tref internalDFN" title="context" href="#dfn-context">
context
</a>,
</li>
<li>
a
mechanism
in
which
a
value
in
a
<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
JSON
object
</a>
may
refer
to
a
<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
JSON
object
</a>
on
a
different
site
on
the
Web,
</li>
<li>
the
ability
to
express
the
language
associated
with
a
<a class="tref internalDFN" title="string" href="#dfn-string">
string
</a>
</li>
<li>
a
way
to
associate
datatypes
with
values
such
as
dates,
times,
weights,
and
distances,
</li>
<li>
and
a
facility
to
express
one
or
more
directed
graphs,
such
as
a
social
network,
in
a
single
document.
</li>
</ul>
<p>
Developers
that
require
any
of
the
facilities
listed
above
or
need
to
serialize
an
RDF
graph
or
dataset
[
<cite>
<a class="bibref" href="#bib-RDF-CONCEPTS">
RDF-CONCEPTS
</a>
</cite>
]
in
a
JSON-based
syntax
will
find
JSON-LD
of
interest.
The
syntax
is
designed
to
not
disturb
already
deployed
systems
running
on
JSON,
but
provide
a
smooth
upgrade
path
from
JSON
to
JSON-LD.
</p>
<section id="how-to-read-this-document">
<h3>
<span class="secno">
1.1
</span>
How
to
Read
this
Document
</h3>
<p>
<em>
This
section
is
non-normative.
</em>
</p>
<p>
This
document
is
a
detailed
specification
for
a
serialization
of
Linked
Data
in
JSON.
The
document
is
primarily
intended
for
the
following
audiences:
</p>
<ul>
<li>
Software
developers
that
want
to
encode
Linked
Data
in
a
variety
of
<del class="diff-old">programing
</del>
<ins class="diff-chg">programming
</ins>
languages
that
can
use
JSON.
</li>
<li>
Software
developers
that
want
to
understand
the
design
decisions
and
language
syntax
for
JSON-LD.
</li>
<li>
Software
developers
that
want
to
implement
processors
and
APIs
for
JSON-LD.
</li>
</ul>
<p>
This
specification
does
not
describe
the
programming
interfaces
for
the
JSON-LD
Syntax.
The
specification
that
describes
the
programming
interfaces
for
JSON-LD
documents
is
the
JSON-LD
Application
Programming
Interface
[
<cite>
<a class="bibref" href="#bib-JSON-LD-API">
JSON-LD-API
</a>
</cite>
].
</p>
<p>
To
understand
the
basics
in
this
specification
you
must
first
be
familiar
with
JSON,
which
is
detailed
in
[
<cite>
<a class="bibref" href="#bib-RFC4627">
RFC4627
</a>
</cite>
].
</p>
</section>
</section>
<section class="informative" id="design-goals-and-rationale">
<h2>
<span class="secno">
2.
</span>
Design
Goals
and
Rationale
</h2>
<p>
<em>
This
section
is
non-normative.
</em>
</p>
<p>
A
number
of
design
goals
were
established
before
the
creation
of
this
markup
language:
</p>
<dl>
<dt>
Simplicity
</dt>
<dd>
No
extra
processors
or
software
libraries
should
be
necessary
to
use
JSON-LD
in
its
most
basic
form.
The
language
will
provide
developers
with
a
very
easy
learning
curve.
Developers
only
need
to
know
JSON
and
two
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keywords
</a>
(
<code>
@context
</code>
and
<code>
@id
</code>
)
to
use
the
basic
functionality
in
JSON-LD.
</dd>
<dt>
Compatibility
</dt>
<dd>
The
JSON-LD
markup
must
be
100%
compatible
with
JSON.
This
ensures
that
all
of
the
standard
JSON
libraries
work
seamlessly
with
JSON-LD
documents.
</dd>
<dt>
Expressiveness
</dt>
<dd>
The
syntax
must
be
able
to
express
directed
graphs,
which
have
been
proven
to
be
able
to
express
almost
every
real
world
data
model.
</dd>
<dt>
Terseness
</dt>
<dd>
The
JSON-LD
syntax
must
be
very
terse
and
human
readable,
requiring
as
little
effort
as
possible
from
the
developer.
</dd>
<dt>
Zero
Edits,
most
of
the
time
</dt>
<dd>
JSON-LD
must
<del class="diff-old">provide
a
mechanism
that
allows
developers
</del>
<ins class="diff-chg">make
the
transition
</ins>
to
<del class="diff-old">reference
contexts
</del>
<ins class="diff-chg">JSON-LD
as
simple
as
possible.
In
many
cases,
zero
edits
to
the
JSON
document
and
the
addition
of
one
line
to
the
HTTP
response
should
suffice
(see
</ins><a href="#referencing-contexts-from-json-documents">
</a>
<del class="diff-old">in
responses
using
plain
old
JSON.
</del>
<ins class="diff-chg">).
</ins>
This
allows
organizations
that
have
already
deployed
large
JSON-based
infrastructure
to
use
JSON-LD's
features
in
a
way
that
is
not
disruptive
to
their
day-to-day
operations
and
is
transparent
to
their
current
customers.
<del class="diff-old">At
times,
</del>
<ins class="diff-chg">However,
there
are
times
where
</ins>
mapping
JSON
to
a
graph
representation
<del class="diff-old">can
become
difficult.
</del>
<ins class="diff-chg">is
more
complex
than
a
simple
one-line
change.
</ins>
In
these
instances,
rather
than
<del class="diff-old">having
</del>
<ins class="diff-chg">extending
</ins>
JSON-LD
<ins class="diff-new">to
</ins>
support
an
esoteric
use
case,
we
chose
not
to
support
the
use
<del class="diff-old">case
and
support
a
simplified
syntax
instead.
So,
while
</del>
<ins class="diff-chg">case.
While
</ins>
Zero
Edits
is
a
design
goal,
it
is
not
always
possible
without
adding
great
complexity
to
the
language.
<del class="diff-old">One-pass
Processing
JSON-LD
supports
one-pass
processing,
which
results
in
a
very
small
memory
footprint
</del>
<ins class="diff-chg">We
should
focus
on
simplicity
</ins>
when
<del class="diff-old">processing
documents.
For
example,
to
expand
a
JSON-LD
document
from
a
compacted
form,
only
one
pass
is
required
over
the
data.
</del>
<ins class="diff-chg">possible.
</ins>
</dd>
</dl>
</section>
<section class="normative" id="terminology">
<h2>
<span class="secno">
3.
</span>
Terminology
</h2>
<section id="general-terminology">
<h3>
<span class="secno">
3.1
</span>
General
Terminology
</h3>
<p>
This
document
uses
the
following
terms
as
defined
in
JSON
[
<cite>
<a class="bibref" href="#bib-RFC4627">
RFC4627
</a>
</cite>
].
Refer
to
the
<em>
JSON
Grammar
</em>
section
in
[
<cite>
<a class="bibref" href="#bib-RFC4627">
RFC4627
</a>
</cite>
]
for
formal
definitions.
</p>
<dl>
<dt>
<dfn title="json_object" id="dfn-json_object">
JSON
object
</dfn>
</dt>
<dd>
An
object
structure
is
represented
as
a
pair
of
curly
brackets
surrounding
zero
or
more
key-value
pairs.
A
key
is
a
<a class="tref internalDFN" title="string" href="#dfn-string">
string
</a>.
A
single
colon
comes
after
each
key,
separating
the
key
from
the
value.
A
single
comma
separates
a
value
from
a
following
key.
</dd>
<dt>
<dfn title="array" id="dfn-array">
array
</dfn>
</dt>
<dd>
An
array
structure
is
represented
as
square
brackets
surrounding
zero
or
more
<del class="diff-old">values
(or
elements).
Elements
</del>
<ins class="diff-chg">values.
Values
</ins>
are
separated
by
commas.
In
JSON,
an
array
is
an
<em>
ordered
</em>
sequence
of
zero
or
more
values.
While
JSON-LD
uses
the
same
array
representation
as
JSON,
the
collection
is
<em>
unordered
</em>
by
default.
While
order
is
preserved
in
regular
JSON
arrays,
it
is
not
in
regular
JSON-LD
arrays
unless
specific
markup
is
provided
(see
<a href="#sets-and-lists" class="sec-ref">
<span class="secno">
6.9
</span>
<span class="sec-title">
Sets
and
Lists
</span>
</a>
).
</dd>
<dt>
<dfn title="string" id="dfn-string">
string
</dfn>
</dt>
<dd>
A
string
is
a
sequence
of
zero
or
more
Unicode
characters,
wrapped
in
double
quotes,
using
backslash
escapes
(if
necessary).
A
character
is
represented
as
a
single
character
string.
</dd>
<dt>
<dfn title="number" id="dfn-number">
number
</dfn>
</dt>
<dd>
A
number
is
similar
to
that
used
in
most
programming
languages,
except
that
the
octal
and
hexadecimal
formats
are
not
used
and
that
leading
zeros
are
not
allowed.
</dd>
<dt>
<dfn title="true" id="dfn-true">
true
</dfn>
and
<dfn title="false" id="dfn-false">
false
</dfn>
</dt>
<dd>
Values
that
are
used
to
express
one
of
two
possible
boolean
states.
</dd>
<dt>
<dfn title="null" id="dfn-null">
null
</dfn>
</dt>
<dd>
The
<a class="tref internalDFN" title="null" href="#dfn-null">
null
</a>
<del class="diff-old">value.
</del>
<ins class="diff-chg">value,
which
is
typically
used
to
clear
or
forget
data.
For
example,
</ins>
A
key-value
pair
in
the
<code>
@context
</code>
where
the
<del class="diff-old">value,
or
the
@id
of
the
value,
</del>
<ins class="diff-chg">value
</ins>
is
<a class="tref internalDFN" title="null" href="#dfn-null">
null
</a>
explicitly
decouples
a
<del class="diff-old">term's
</del>
<a class="tref internalDFN" title="term" href="#dfn-term">
<ins class="diff-chg">term
</ins></a><ins class="diff-chg">
's
</ins>
association
with
an
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
<del class="diff-old">.
</del>
</abbr>
</a>.
A
key-value
pair
in
the
body
of
a
JSON-LD
document
whose
value
is
<a class="tref internalDFN" title="null" href="#dfn-null">
null
</a>
has
the
same
meaning
as
if
the
key-value
pair
was
not
defined.
If
<code>
@value
</code>,
<code>
@list
</code>,
or
<code>
@set
</code>
is
set
to
<a class="tref internalDFN" title="null" href="#dfn-null">
null
</a>
in
expanded
form,
then
the
entire
<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
JSON
object
</a>
is
ignored.
</dd>
</dl>
</section>
<section id="syntax-tokens-and-keywords">
<h3>
<span class="secno">
3.2
</span>
Syntax
Tokens
and
Keywords
</h3>
<p>
JSON-LD
specifies
a
number
of
syntax
tokens
and
<dfn title="keyword" id="dfn-keyword">
keywords
</dfn>
that
are
a
core
part
of
the
language:
</p>
<dl>
<dt>
<code>
@context
</code>
</dt>
<dd>
Used
to
define
the
short-hand
names
that
are
used
throughout
a
JSON-LD
document.
These
short-hand
names
are
called
<a class="tref internalDFN" title="term" href="#dfn-term">
terms
</a>
and
help
developers
to
express
specific
identifiers
in
a
compact
manner.
The
<code>
@context
</code>
keyword
is
described
in
detail
in
the
section
titled
<a href="#the-context" class="sec-ref">
<span class="secno">
5.1
</span>
<span class="sec-title">
The
Context
</span>
</a>.
</dd>
<dt>
<code>
@id
</code>
</dt>
<dd>
Used
to
uniquely
identify
<em>
things
</em>
that
are
being
described
in
the
document.
This
keyword
is
described
in
<a href="#node-identifiers" class="sec-ref">
<span class="secno">
<del class="diff-old">5.4
</del>
<ins class="diff-chg">5.3
</ins>
</span>
<span class="sec-title">
Node
Identifiers
</span>
</a>.
</dd>
<dt>
<code>
@value
</code>
</dt>
<dd>
Used
to
specify
the
data
that
is
associated
with
a
particular
<a class="tref internalDFN" title="property" href="#dfn-property">
property
</a>
in
the
graph.
This
keyword
is
described
in
<a href="#string-internationalization" class="sec-ref">
<span class="secno">
<del class="diff-old">5.6
</del>
<ins class="diff-chg">6.5
</ins>
</span>
<span class="sec-title">
String
Internationalization
</span>
</a>
and
<a href="#typed-values" class="sec-ref">
<span class="secno">
6.2
</span>
<span class="sec-title">
Typed
Values
</span>
</a>.
</dd>
<dt>
<code>
@language
</code>
</dt>
<dd>
Used
to
specify
the
native
language
for
a
particular
value
or
the
default
language
of
a
JSON-LD
document.
This
keyword
is
described
in
the
section
titled
<a href="#string-internationalization" class="sec-ref">
<span class="secno">
<del class="diff-old">5.6
</del>
<ins class="diff-chg">6.5
</ins>
</span>
<span class="sec-title">
String
Internationalization
</span>
</a>.
</dd>
<dt>
<code>
@type
</code>
</dt>
<dd>
Used
to
set
the
data
type
of
a
<a class="tref internalDFN" title="node" href="#dfn-node">
node
</a>
or
<a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">
typed
value
</a>.
This
keyword
is
described
in
the
section
titled
<a href="#typed-values" class="sec-ref">
<span class="secno">
6.2
</span>
<span class="sec-title">
Typed
Values
</span>
</a>.
</dd>
<dt>
<code>
@container
</code>
</dt>
<dd>
Used
to
set
the
<ins class="diff-new">default
</ins>
container
<del class="diff-old">of
</del>
<ins class="diff-chg">type
for
</ins>
a
<del class="diff-old">particular
value.
</del>
<a class="tref internalDFN" title="term" href="#dfn-term">
<ins class="diff-chg">term
</ins></a>.
This
keyword
is
described
in
the
section
titled
<a href="#sets-and-lists" class="sec-ref">
<span class="secno">
6.9
</span>
<span class="sec-title">
Sets
and
Lists
</span>
</a>.
</dd>
<dt>
<code>
@list
</code>
</dt>
<dd>
Used
to
express
an
ordered
set
of
data.
This
keyword
is
described
in
the
section
titled
<a href="#sets-and-lists" class="sec-ref">
<span class="secno">
6.9
</span>
<span class="sec-title">
Sets
and
Lists
</span>
</a>.
</dd>
<dt>
<code>
@set
</code>
</dt>
<dd>
Used
to
express
an
unordered
set
of
data
and
to
ensure
that
values
are
always
represented
as
arrays.
This
keyword
is
described
in
the
section
titled
<a href="#sets-and-lists" class="sec-ref">
<span class="secno">
6.9
</span>
<span class="sec-title">
Sets
and
Lists
</span>
</a>.
</dd>
<dt>
<code>
<del class="diff-old">@annotation
</del>
<ins class="diff-chg">@index
</ins>
</code>
</dt>
<dd>
Used
to
specify
that
a
container
is
used
to
index
information
and
that
processing
should
continue
deeper
into
a
JSON
data
structure.
This
keyword
is
described
in
the
section
titled
<a href="#data-indexing" class="sec-ref">
<span class="secno">
<del class="diff-old">6.14
</del>
<ins class="diff-chg">6.16
</ins>
</span>
<span class="sec-title">
Data
<del class="diff-old">Annotations
</del>
<ins class="diff-chg">Indexing
</ins>
</span>
</a>.
</dd>
<dt>
<code>
@vocab
</code>
</dt>
<dd>
Used
to
expand
properties
and
values
in
<code>
@type
</code>
with
a
common
prefix
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>.
This
keyword
is
described
in
section
<a href="#iris" class="sec-ref">
<span class="secno">
<del class="diff-old">5.3
</del>
<ins class="diff-chg">5.2
</ins>
</span>
<span class="sec-title">
IRIs
</span>
</a>.
</dd>
<dt>
<code>
@graph
</code>
</dt>
<dd>
Used
to
explicitly
label
a
<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
JSON-LD
graph
</a>.
This
keyword
is
described
in
<a href="#named-graphs" class="sec-ref">
<span class="secno">
6.11
</span>
<span class="sec-title">
Named
Graphs
</span>
</a>.
</dd>
<dt>
<code>:
</code>
</dt>
<dd>
The
separator
for
JSON
keys
and
values
that
use
<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
compact
IRIs
</a>.
</dd>
</dl>
<p>
For
the
avoidance
of
doubt,
all
keys,
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keywords
</a>,
and
values
in
JSON-LD
are
case-sensitive.
</p>
</section>
</section>
<section class="normative" id="conformance">
<h2>
<span class="secno">
4.
</span>
Conformance
</h2>
<p>
<del class="diff-old">The
JSON-LD
Syntax
</del>
<ins class="diff-chg">This
</ins>
specification
describes
the
conformance
criteria
for
JSON-LD
<del class="diff-old">documents
(relevant
</del>
<ins class="diff-chg">documents.
This
criteria
is
relevant
</ins>
to
authors
and
authoring
tool
<del class="diff-old">implementors).
</del>
<ins class="diff-chg">implementers.
</ins>
</p>
<p>
A
<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
JSON-LD
document
</a>
complies
with
this
specification
if
it
follows
the
normative
statements
<del class="diff-old">for
documents
defined
</del>
in
<del class="diff-old">sections
6.4
Referencing
Contexts
from
JSON
Documents
and
</del>
<ins class="diff-chg">section
</ins>
<a href="#json-ld-grammar" class="sec-ref">
<span class="secno">
B.
</span>
<span class="sec-title">
JSON-LD
Grammar
</span>
</a>.
<ins class="diff-new">JSON
documents
can
be
interpreted
as
JSON-LD
by
following
the
normative
statements
in
section
</ins><a href="#referencing-contexts-from-json-documents"></a>.
For
convenience,
normative
statements
for
documents
are
often
phrased
as
statements
on
the
properties
of
the
document.
</p>
<p>
The
key
words
<em class="rfc2119" title="must">
must
</em>,
<em class="rfc2119" title="must not">
must
not
</em>,
<em class="rfc2119" title="required">
required
</em>,
<em class="rfc2119" title="shall">
shall
</em>,
<em class="rfc2119" title="shall not">
shall
not
</em>,
<em class="rfc2119" title="should">
should
</em>,
<em class="rfc2119" title="should not">
should
not
</em>,
<em class="rfc2119" title="recommended">
recommended
</em>,
<em class="rfc2119" title="not recommended">
not
recommended
</em>,
<em class="rfc2119" title="may">
may
</em>,
and
<em class="rfc2119" title="optional">
optional
</em>
in
this
<del class="diff-old">Recommendation
</del>
<ins class="diff-chg">specification
</ins>
have
the
meaning
defined
in
[
<cite>
<a class="bibref" href="#bib-RFC2119">
RFC2119
</a>
</cite>
].
</p>
</section>
<section class="normative" id="basic-concepts">
<h2>
<span class="secno">
5.
</span>
Basic
Concepts
</h2>
<p>
<ins class="diff-chg">JSON
[
</ins><cite>
<del class="diff-old">5.1
The
Context
</del>
<a class="bibref" href="#bib-RFC4627">
<ins class="diff-chg">RFC4627
</ins></a></cite><ins class="diff-chg">
]
is
a
lightweight,
language-independent
data-interchange
format.
It
is
easy
to
parse
and
easy
to
generate.
However,
it
is
difficult
to
integrate
JSON
from
different
sources
as
the
data
has
just
local
meaning.
Furthermore,
JSON
has
no
built-in
support
for
hyperlinks
-
a
fundamental
building
block
on
the
Web.
Let's
look
at
an
example
that
we
will
be
using
for
the
rest
of
this
section:
</ins></p>  <div class="example"><div class="example-title"><span>Example 1</span>: Sample JSON document</div><pre class="example">{<ins class="diff-chg">
  "name": "Manu Sporny",
  "homepage": "http://manu.sporny.org/",
  "image": "http://manu.sporny.org/images/manu.png"
}
</ins></pre></div>
<p>
<del class="diff-old">In
JSON-LD,
</del>
<ins class="diff-chg">It's
obvious
for
humans
that
the
data
is
about
</ins>
a
<del class="diff-old">context
</del>
<ins class="diff-chg">person
whose
name
</ins>
is
<del class="diff-old">used
</del>
<ins class="diff-chg">"Manu
Sporny"
and
that
the
</ins><code><ins class="diff-chg">
homepage
</ins></code><ins class="diff-chg">
property
contains
the
URL
of
that
person's
homepage.
A
machine
doesn't
have
such
an
intuitive
understanding
and
sometimes,
even
for
humans,
it
is
difficult
</ins>
to
<del class="diff-old">map
terms
,
i.e.,
properties
with
associated
values
</del>
<ins class="diff-chg">resolve
ambiguities
</ins>
in
<del class="diff-old">an
JSON
document,
</del>
<ins class="diff-chg">such
representations.
This
problem
can
be
solved
by
using
unambiguous
identifiers
</ins>
to
<del class="diff-old">IRIs
.
</del>
<ins class="diff-chg">denote
the
different
concepts
instead
of
</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
terms
</ins></a><ins class="diff-chg">
such
as
"name",
"homepage",
etc.
</ins>
</p>
<p>
<del class="diff-old">The
</del>
<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
<ins class="diff-chg">Linked
Data
</ins></a>,<ins class="diff-chg">
and
the
</ins>
Web
<ins class="diff-new">in
general,
</ins>
uses
<a class="tref internalDFN" title="iri" href="#dfn-iri">
IRIs
</a>
<ins class="diff-new">(Internationalized
Resource
Identifiers
as
described
in
[
</ins><cite><a class="bibref" href="#bib-RFC3987"><ins class="diff-new">
RFC3987
</ins></a></cite><ins class="diff-new">
])
</ins>
for
unambiguous
identification.
The
idea
is
<del class="diff-old">that
these
terms
</del>
<ins class="diff-chg">to
assign
</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><ins class="diff-chg">
IRIs
</ins>
</a>
<del class="diff-old">mean
</del>
<ins class="diff-chg">to
</ins>
something
that
may
be
of
use
to
other
developers
and
that
it
is
useful
to
give
them
an
unambiguous
identifier.
That
is,
it
is
useful
for
<a class="tref internalDFN" title="term" href="#dfn-term">
terms
</a>
to
expand
to
<a class="tref internalDFN" title="iri" href="#dfn-iri">
IRIs
</a>
so
that
developers
don't
accidentally
step
on
each
other's
<del class="diff-old">vocabulary
terms
and
other
resources.
</del>
<ins class="diff-chg">terms.
</ins>
Furthermore,
<del class="diff-old">developers,
</del>
<ins class="diff-chg">developers
</ins>
and
<del class="diff-old">machines,
</del>
<ins class="diff-chg">machines
</ins>
are
able
to
use
this
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
(by
<del class="diff-old">plugging
it
directly
into
</del>
<ins class="diff-chg">using
</ins>
a
web
browser,
for
instance)
to
go
to
the
term
and
get
a
definition
of
what
the
term
means.
<del class="diff-old">This
mechanism
is
analogous
to
</del>
</p>
<p>
<ins class="diff-chg">Leveraging
</ins>
the
<del class="diff-old">way
we
can
use
WordNet
today
to
see
</del>
<ins class="diff-chg">well-known
</ins><a href="http://schema.org/"><ins class="diff-chg">
schema.org
vocabulary
</ins></a>,
the
<del class="diff-old">definition
of
words
in
</del>
<ins class="diff-chg">example
above
could
be
unambiguously
expressed
as
follows:
</ins></p>  <div class="example"><div class="example-title"><span>Example 2</span>: Sample JSON-LD document using full IRIs instead of terms</div><pre class="example">{<ins class="diff-chg">
  "<span class="diff">http://schema.org/name</span>": "Manu Sporny",
  "<span class="diff">http://schema.org/url</span>": <span class="diff">{ "@id": </span>"http://manu.sporny.org/" <span class="diff">}</span>,
  "<span class="diff">http://schema.org/image</span>": <span class="diff">{ "@id": </span>"http://manu.sporny.org/images/manu.png" <span class="diff">}</span>
}
</ins></pre></div><p><ins class="diff-chg">
In
</ins>
the
<del class="diff-old">English
language.
Developers
</del>
<ins class="diff-chg">example
above,
every
property
is
unambiguously
identified
by
an
</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
IRI
</ins></abbr></a>
and
<del class="diff-old">machines
need
the
same
sort
of
definition
of
terms.
</del>
<ins class="diff-chg">all
values
representing
</ins>
<a class="tref internalDFN" title="iri" href="#dfn-iri">
IRIs
</a>
<del class="diff-old">provide
a
way
to
ensure
that
these
terms
</del>
are
<del class="diff-old">unambiguous.
For
example,
</del>
<ins class="diff-chg">explicitly
marked
as
such
by
</ins>
the
<del class="diff-old">term
</del>
<code>
<del class="diff-old">name
</del>
<ins class="diff-chg">@id
</ins>
</code>
<del class="diff-old">may
map
directly
to
the
IRI
http://xmlns.com/foaf/0.1/name
.
This
allows
</del>
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
<ins class="diff-chg">keyword
</ins></a>.<ins class="diff-chg">
While
this
is
a
valid
</ins>
JSON-LD
<del class="diff-old">documents
to
be
constructed
using
the
common
JSON
practice
of
simple
key-value
pairs
while
ensuring
</del>
<ins class="diff-chg">document
</ins>
that
<del class="diff-old">the
data
</del>
is
<del class="diff-old">useful
outside
of
</del>
<ins class="diff-chg">very
specific
about
its
data,
</ins>
the
<del class="diff-old">page,
API
or
database
in
which
it
resides.
Note
that,
</del>
<ins class="diff-chg">document
is
also
overly
verbose
and
difficult
</ins>
to
<del class="diff-old">avoid
forward-compatibility
issues,
terms
starting
</del>
<ins class="diff-chg">work
</ins>
with
<del class="diff-old">an
@
character
are
to
be
avoided
as
they
might
be
used
as
keywords
in
future
versions
of
JSON-LD.
Furthermore,
</del>
<ins class="diff-chg">for
human
developers.
To
address
this
issue,
JSON-LD
introduces
</ins>
the
<del class="diff-old">use
</del>
<ins class="diff-chg">notion
</ins>
of
<del class="diff-old">empty
terms
</del>
<ins class="diff-chg">a
</ins><a class="tref internalDFN" title="context" href="#dfn-context"><ins class="diff-chg">
context
</ins>
</a>
<del class="diff-old">(
&quot;&quot;
)
is
discouraged
</del>
as
<del class="diff-old">not
all
programming
languages
are
able
to
handle
empty
property
names.
</del>
<ins class="diff-chg">described
in
the
next
section.
</ins>
</p>
<section id="the-context">
<h3>
<span class="secno">
<ins class="diff-new">5.1
</ins></span><ins class="diff-new">
The
Context
</ins></h3>
<p>
<del class="diff-old">In
</del>
<ins class="diff-chg">Simply
speaking,
</ins>
a
<del class="diff-old">JSON-LD
document,
the
mapping
between
</del>
<dfn title="context" id="dfn-context">
<ins class="diff-chg">context
</ins></dfn><ins class="diff-chg">
is
used
to
map
</ins>
<a class="tref internalDFN" title="term" href="#dfn-term">
terms
</a>,
<ins class="diff-new">i.e.,
</ins><a class="tref internalDFN" title="property" href="#dfn-property"><ins class="diff-new">
properties
</ins>
</a>
<del class="diff-old">and
</del>
<ins class="diff-chg">with
associated
values,
to
</ins>
<a class="tref internalDFN" title="iri" href="#dfn-iri">
IRIs
</a>.
<a class="tref internalDFN" title="term" href="#dfn-term">
<ins class="diff-new">Terms
</ins></a><ins class="diff-new">
are
case
sensitive
and
any
valid
</ins><a class="tref internalDFN" title="string" href="#dfn-string"><ins class="diff-new">
string
</ins>
</a>
<ins class="diff-new">that
</ins>
is
<del class="diff-old">typically
collected
</del>
<ins class="diff-chg">not
a
reserved
JSON-LD
</ins><a class="tref internalDFN" title="keyword" href="#dfn-keyword"><ins class="diff-chg">
keyword
</ins></a><ins class="diff-chg">
can
be
used
as
a
</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
term
</ins></a>.</p><p><ins class="diff-chg">
For
the
sample
document
</ins>
in
<ins class="diff-new">the
previous
section,
</ins>
a
<a class="tref internalDFN" title="context" href="#dfn-context">
context
<del class="diff-old">definition
</del>
</a>
<del class="diff-old">that
</del>
would
look
something
like
this:
</p>
<del class="diff-old">{
  &quot;@context&quot;:
</del>
    <div class="example"><div class="example-title"><span>Example 3</span>: Context for the sample document in the previous section</div><pre class="example">{
  <span class="diff">"@context":
  {
<del class="diff-old">    &quot;name&quot;: &quot;http://xmlns.com/foaf/0.1/name&quot;,
    &quot;depiction&quot;:
    {
      &quot;@id&quot;: &quot;http://xmlns.com/foaf/0.1/depiction&quot;,
      &quot;@type&quot;: &quot;@id&quot;
    },
    &quot;homepage&quot;:
    {
      &quot;@id&quot;: &quot;http://xmlns.com/foaf/0.1/homepage&quot;,
      &quot;@type&quot;: &quot;@id&quot;
</del>
<ins class="diff-chg">    "name": "http://schema.org/name",
    "image": {
      "@id": "http://schema.org/image",
      "@type": "@id"
</ins>
    },
<del class="diff-old">  }
</del>
<ins class="diff-chg">    "homepage": {
      "@id": "http://schema.org/url",
      "@type": "@id"
    }
  }</span>
</ins>
}
</pre>
</div>
<p>
<del class="diff-old">Let's
assume
that
</del>
<ins class="diff-chg">As
the
</ins><a class="tref internalDFN" title="context" href="#dfn-context"><ins class="diff-chg">
context
</ins></a><ins class="diff-chg">
above
shows,
the
value
of
</ins>
a
<del class="diff-old">developer
starts
with
</del>
<dfn title="term_definition" id="dfn-term_definition">
<ins class="diff-chg">term
definition
</ins></dfn><ins class="diff-chg">
can
either
be
a
simple
string,
mapping
</ins>
the
<del class="diff-old">following
</del>
<a class="tref internalDFN" title="term" href="#dfn-term">
<ins class="diff-chg">term
</ins></a><ins class="diff-chg">
to
an
</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
IRI
</ins></abbr></a>,<ins class="diff-chg">
or
a
</ins><a class="tref internalDFN" title="json_object" href="#dfn-json_object">
JSON
<del class="diff-old">document:
</del>
<ins class="diff-chg">object
</ins></a>.
</p>
<del class="diff-old">{
  &quot;name&quot;: &quot;Manu Sporny&quot;,
  &quot;homepage&quot;: &quot;http://manu.sporny.org/&quot;,
  &quot;depiction&quot;: &quot;http://twitter.com/account/profile_image/manusporny&quot;
}
</del>
<p>
<del class="diff-old">The
developer
can
add
</del>
<ins class="diff-chg">When
</ins>
a
<del class="diff-old">single
line
to
the
</del>
<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
JSON
<del class="diff-old">document
</del>
<ins class="diff-chg">object
</ins></a><ins class="diff-chg">
is
associated
with
a
term,
it
is
called
an
</ins><a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition"><ins class="diff-chg">
expanded
term
definition
</ins></a>.<dfn title="expanded_term_definition" id="dfn-expanded_term_definition"><ins class="diff-chg">
Expanded
term
definitions
</ins></dfn><ins class="diff-chg">
may
be
used
to
associate
</ins><a href="#type-coercion"><ins class="diff-chg">
type
</ins></a><ins class="diff-chg">
or
</ins><a href="#string-internationalization"><ins class="diff-chg">
language
information
</ins></a><ins class="diff-chg">
with
a
term.
The
example
</ins>
above
<ins class="diff-new">specifies
that
the
values
of
</ins><code><ins class="diff-new">
image
</ins></code><ins class="diff-new">
and
</ins><code><ins class="diff-new">
homepage
</ins></code><ins class="diff-new">
terms
are
</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><ins class="diff-new">
IRIs
</ins></a>.<ins class="diff-new">
They
also
allow
terms
</ins>
to
<del class="diff-old">reference
</del>
<ins class="diff-chg">be
used
for
</ins><a href="#data-indexing"><ins class="diff-chg">
index
maps
</ins></a><ins class="diff-chg">
and
to
specify
whether
</ins><a class="tref internalDFN" title="array" href="#dfn-array"><ins class="diff-chg">
array
</ins></a><ins class="diff-chg">
values
are
to
be
interpreted
as
</ins><a href="#sets-and-lists"><ins class="diff-chg">
sets
or
lists
</ins></a>.<a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition"><ins class="diff-chg">
Expanded
term
definitions
</ins></a><ins class="diff-chg">
may
be
defined
using
</ins><a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri"><ins class="diff-chg">
absolute
</ins></a><ins class="diff-chg">
or
</ins><a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri"><ins class="diff-chg">
compact
IRIs
</ins></a><ins class="diff-chg">
as
keys,
which
is
mainly
used
to
associate
type
or
language
information
with
an
</ins><a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri"><ins class="diff-chg">
absolute
</ins></a><ins class="diff-chg">
or
</ins><a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri"><ins class="diff-chg">
compact
</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
IRI
</ins></abbr></a>.</p><p><a class="tref internalDFN" title="context" href="#dfn-context"><ins class="diff-chg">
Contexts
</ins></a><ins class="diff-chg">
can
either
be
directly
embedded
into
the
document
or
be
referenced.
Assuming
</ins>
the
context
<del class="diff-old">and
transform
</del>
<ins class="diff-chg">document
in
the
previous
example
can
be
retrieved
at
</ins><code><ins class="diff-chg">
http://json-ld.org/contexts/person.jsonld
</ins></code>,
it
<del class="diff-old">into
</del>
<ins class="diff-chg">can
be
referenced
by
adding
a
single
line
and
allows
</ins>
a
JSON-LD
<del class="diff-old">document:
</del>
<ins class="diff-chg">document
to
be
expressed
much
more
concisely
as
shown
in
the
example
below:
</ins>
</p>
<del class="diff-old">{
  
  &quot;name&quot;: &quot;Manu Sporny&quot;,
  &quot;homepage&quot;: &quot;http://manu.sporny.org/&quot;,
  &quot;depiction&quot;: &quot;http://twitter.com/account/profile_image/manusporny&quot;
</del>
    <div class="example"><div class="example-title"><span>Example 4</span>: Referencing a JSON-LD context</div><pre class="example">{
  <span class="diff">"@context": "http://json-ld.org/contexts/person.jsonld",</span>
<ins class="diff-chg">  "name": "Manu Sporny",
  "homepage": "http://manu.sporny.org/",
  "image": "http://manu.sporny.org/images/manu.png"
</ins>
}
</pre>
</div>
<p>
The
<del class="diff-old">additions
above
transform
the
previous
JSON
document
into
a
JSON
document
with
added
semantics
because
the
@context
</del>
<ins class="diff-chg">referenced
context
not
only
</ins>
specifies
how
the
<del class="diff-old">name
,
homepage
,
and
depiction
</del>
terms
map
to
<a class="tref internalDFN" title="iri" href="#dfn-iri">
IRIs
<del class="diff-old">.
Mapping
those
keys
to
IRIs
gives
</del>
</a>
<ins class="diff-chg">in
</ins>
the
<del class="diff-old">data
global
context.
If
two
developers
use
</del>
<ins class="diff-chg">Schema.org
vocabulary
but
also
specifies
that
</ins>
the
<del class="diff-old">same
</del>
<ins class="diff-chg">values
of
the
</ins><code><ins class="diff-chg">
homepage
</ins></code><ins class="diff-chg">
and
</ins><code><ins class="diff-chg">
image
</ins></code><ins class="diff-chg">
property
can
be
interpreted
as
an
</ins><a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
<del class="diff-old">to
describe
a
property,
they
are
</del>
</a>
<ins class="diff-chg">(e.g.
</ins><code><ins class="diff-chg">
"@type":
"@id"
</ins></code>,<ins class="diff-chg">
see
section
</ins><a href="#iris" class="sec-ref"><span class="secno"><ins class="diff-chg">
5.2
</ins></span><span class="sec-title"><ins class="diff-chg">
IRIs
</ins></span></a><ins class="diff-chg">
for
</ins>
more
<del class="diff-old">than
likely
expressing
the
same
concept.
</del>
<ins class="diff-chg">details).
</ins>
This
<ins class="diff-new">information
gives
the
data
global
context
and
</ins>
allows
<del class="diff-old">both
</del>
developers
to
re-use
each
<del class="diff-old">others'
</del>
<ins class="diff-chg">other's
</ins>
data
without
having
to
agree
to
how
their
data
will
interoperate
on
a
site-by-site
basis.
<del class="diff-old">Contexts
may
also
contain
type,
language
or
additional
information
for
certain
terms
.
</del>
External
JSON-LD
context
documents
may
contain
extra
information
located
outside
of
the
<code>
@context
</code>
key,
such
as
documentation
about
the
<a class="tref internalDFN" title="term" href="#dfn-term">
terms
</a>
declared
in
the
document.
Information
contained
outside
of
the
<code>
@context
</code>
value
is
<del class="diff-old">simply
discarded
</del>
<ins class="diff-chg">ignored
</ins>
when
the
document
is
used
as
an
external
JSON-LD
context
<del class="diff-old">document
(see
6.4
Referencing
Contexts
from
JSON
Documents
).
</del>
<ins class="diff-chg">document.
</ins>
</p>
<p>
Contexts
may
also
be
specified
in-line.
This
<del class="diff-old">ensures
</del>
<ins class="diff-chg">has
the
advantage
</ins>
that
<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
JSON-LD
documents
</a>
can
be
<del class="diff-old">understood
</del>
<ins class="diff-chg">processed
</ins>
even
in
the
absence
of
a
connection
to
the
Web.
</p>
<del class="diff-old">{
  &quot;@context&quot;:
</del>
    <div class="example"><div class="example-title"><span>Example 5</span>: In-line context definition</div><pre class="example">{
  <span class="diff">"@context":
  {
<del class="diff-old">    &quot;name&quot;: &quot;http://xmlns.com/foaf/0.1/name&quot;,
    &quot;depiction&quot;:
    {
      &quot;@id&quot;: &quot;http://xmlns.com/foaf/0.1/depiction&quot;,
      &quot;@type&quot;: &quot;@id&quot;
    },
    &quot;homepage&quot;:
    {
      &quot;@id&quot;: &quot;http://xmlns.com/foaf/0.1/homepage&quot;,
      &quot;@type&quot;: &quot;@id&quot;
</del>
<ins class="diff-chg">    "name": "http://schema.org/name",
    "image": {
      "@id": "http://schema.org/image",
      "@type": "@id"
</ins>
    },
<del class="diff-old">  },
  &quot;name&quot;: &quot;Manu Sporny&quot;,
  &quot;homepage&quot;: &quot;http://manu.sporny.org/&quot;,
  &quot;depiction&quot;: &quot;http://twitter.com/account/profile_image/manusporny&quot;
}
Contexts
may
be
used
at
any
time
a
node
object
is
defined.
In
particular,
a
JSON-LD
document
may
define
more
than
one
context,
as
in
the
following
example:
[
  {
    
    &quot;name&quot;: &quot;Manu Sporny&quot;,
    &quot;homepage&quot;: &quot;http://manu.sporny.org/&quot;,
    &quot;depiction&quot;: &quot;http://twitter.com/account/profile_image/manusporny&quot;
  },
  {
    
    &quot;name&quot;: &quot;The Empire State Building&quot;,
    &quot;description&quot;: &quot;The Empire State Building is a 102-story landmark in New York City.&quot;,
    &quot;geo&quot;: {
      &quot;latitude&quot;: &quot;40.75&quot;,
      &quot;longitude&quot;: &quot;73.98&quot;
</del>
<ins class="diff-chg">    "homepage": {
      "@id": "http://schema.org/url",
      "@type": "@id"
</ins>
    }
<del class="diff-old">  }
]
This
is
useful
when
an
author
would
like
to
use
an
existing
context
and
add
application-specific
terms
to
the
existing
context.
Duplicate
context
terms
are
overridden
using
a
last-defined-overrides
mechanism.
{
  &quot;@context&quot;:
  {
    &quot;name&quot;: &quot;http://example.com/person#name&quot;,
    &quot;details&quot;: &quot;http://example.com/person#details&quot;
</del>
  },</span>
<del class="diff-old">  &quot;&quot;: &quot;Markus Lanthaler&quot;,
  ...
  &quot;details&quot;:
  {
    &quot;@context&quot;: {
      &quot;name&quot;: &quot;http://example.com/organization#name&quot;
    },
    &quot;&quot;: &quot;Graz University of Technology&quot;
  }
}
In
the
example
above,
the
name
prefix
is
overridden
in
the
more
deeply
nested
details
structure.
Note
that
this
is
rarely
a
good
authoring
practice
and
is
typically
used
when
there
exist
legacy
applications
that
depend
on
the
specific
structure
of
the
JSON
object
.
If
a
term
is
re-defined
within
a
context,
all
previous
rules
associated
with
the
previous
definition
are
removed.
If
that
term
is
re-defined
to
null
,
the
term
is
effectively
removed
from
the
list
of
terms
defined
in
the
active
context
.
A
node
object
may
specify
multiple
contexts,
using
an
array
,
processed
in
order.
The
set
of
contexts
defined
within
a
specific
node
object
are
referred
to
as
local
contexts
.
Setting
the
context
to
null
effectively
resets
the
active
context
to
an
empty
context.
The
active
context
refers
to
the
accumulation
of
local
contexts
that
are
in
scope
at
a
specific
point
within
the
document.
The
following
example
specifies
an
external
context
and
then
layers
a
local
context
on
top
of
the
external
context:
{
  &quot;@context&quot;: [
    &quot;http://json-ld.org/contexts/person.jsonld&quot;,
    {
      &quot;pic&quot;: &quot;http://xmlns.com/foaf/0.1/depiction&quot;
    }
  ],
  &quot;name&quot;: &quot;Manu Sporny&quot;,
  &quot;homepage&quot;: &quot;http://manu.sporny.org/&quot;,
  
}
Note
To
ensure
the
best
possible
performance,
it
is
a
best
practice
to
put
the
context
definition
at
the
top
of
the
JSON-LD
document.
If
it
isn't
listed
first,
processors
have
to
save
each
key-value
pair
until
the
context
is
processed.
This
creates
a
memory
and
complexity
burden
for
certain
types
of
low-memory
footprint
JSON-LD
processors.
5.2
From
JSON
to
JSON-LD
If
a
set
of
terms
such
as,
name
,
homepage
,
and
depiction
,
are
defined
in
a
context
,
and
that
context
is
used
to
resolve
the
names
in
JSON
objects
,
machines
are
able
to
automatically
expand
the
terms
to
something
unambiguous
like
this:
  {
  &quot;&quot;: &quot;Manu Sporny&quot;,
  &quot;&quot;: &quot;http://manu.sporny.org&quot;
  &quot;&quot;: &quot;http://twitter.com/account/profile_image/manusporny&quot;
</del>
<ins class="diff-chg">  "name": "Manu Sporny",
  "homepage": "http://manu.sporny.org/",
  "image": "http://manu.sporny.org/images/manu.png"
</ins>
}
</pre>
</div>
<del class="diff-old">Doing
this
allows
JSON
to
be
unambiguously
machine-readable
without
requiring
developers
to
drastically
change
their
workflow.
A
JSON
object
used
to
define
property
values
of
a
node
is
called
a
node
object
.
Note
The
example
above
does
not
use
the
@id
keyword
to
identify
the
node
being
described
above.
This
type
of
node
is
called
a
blank
node
.
It
is
advised
that
all
node
objects
in
JSON-LD
are
identified
by
IRIs
via
the
@id
keyword
unless
the
data
is
not
intended
to
be
linked
to
from
other
data
sets.
</del>
</section>
<section id="iris">
<h3>
<span class="secno">
<del class="diff-old">5.3
</del>
<ins class="diff-chg">5.2
</ins>
</span>
IRIs
</h3>
<p>
<a class="tref internalDFN" title="iri" href="#dfn-iri">
IRIs
</a>
(Internationalized
Resource
<del class="diff-old">Identifiers)
</del>
<ins class="diff-chg">Identifiers
[
</ins><cite><a class="bibref" href="#bib-RFC3987"><ins class="diff-chg">
RFC3987
</ins></a></cite><ins class="diff-chg">
])
</ins>
are
fundamental
to
<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
Linked
Data
</a>
as
that
is
how
most
<a class="tref internalDFN" title="node" href="#dfn-node">
nodes
</a>
and
<a class="tref internalDFN" title="property" href="#dfn-property">
properties
</a>
are
identified.
<del class="diff-old">IRIs
can
be
expressed
in
a
variety
of
different
ways
in
JSON-LD:
Except
within
a
context
definition,
terms
in
the
key
position
in
a
JSON
object
that
have
a
mapping
in
the
active
context
expand
to
an
IRI
.
If
there's
a
@vocab
mapping
in
the
active
context
also
terms
without
an
explicit
mapping
in
the
active
context
are
expanded
to
an
IRI
.
An
IRI
is
generated
for
the
string
value
specified
using
@id
or
@type
.
An
IRI
is
generated
for
the
string
value
of
any
key
for
which
there
are
coercion
rules
in
effect
that
identify
the
value
as
an
@id
.
</del>
<ins class="diff-chg">In
JSON-LD,
</ins>
IRIs
may
be
represented
as
an
<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
absolute
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
or
a
<a class="tref internalDFN" title="relative_iri" href="#dfn-relative_iri">
relative
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>.
An
<dfn title="absolute_iri" id="dfn-absolute_iri">
absolute
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</dfn>
is
defined
in
[
<cite>
<a class="bibref" href="#bib-RFC3987">
RFC3987
</a>
</cite>
]
<ins class="diff-new">as
</ins>
containing
a
<em>
scheme
</em>
along
with
<em>
path
</em>
and
optional
<em>
query
</em>
and
<em>
fragment
</em>
segments.
A
<dfn title="relative_iri" id="dfn-relative_iri">
relative
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</dfn>
is
an
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
that
is
relative
to
some
other
<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
absolute
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>.
In
JSON-LD
all
<a class="tref internalDFN" title="relative_iri" href="#dfn-relative_iri">
relative
IRIs
</a>
are
resolved
relative
to
the
<dfn title="base_iri" id="dfn-base_iri">
base
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</dfn>
associated
with
the
<del class="diff-old">document
(typically,
</del>
<ins class="diff-chg">document,
which
is
typically
</ins>
the
directory
<del class="diff-old">that
contains
the
document
or
</del>
<ins class="diff-chg">path
containing
</ins>
the
<del class="diff-old">document
itself).
</del>
<ins class="diff-chg">document.
</ins>
</p>
<p>
<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
IRIs
</a>
can
be
expressed
directly
in
the
key
position
like
so:
</p>
<del class="diff-old">{
</del>
  <div class="example"><div class="example-title"><span>Example 6</span>: IRI as a key</div><pre class="example">{
...
<del class="diff-old">  &quot;&quot;: &quot;Manu Sporny&quot;,
</del>
<ins class="diff-chg">  "<span class="diff">http://schema.org/name</span>": "Manu Sporny",
</ins>
...
}
</pre>
</div>
<p>
In
the
example
above,
the
key
<code>
<del class="diff-old">http://xmlns.com/foaf/0.1/name
</del>
<ins class="diff-chg">http://schema.org/name
</ins>
</code>
is
interpreted
as
an
<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
<ins class="diff-chg">absolute
</ins>
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
because
it
contains
a
colon
(
<code>:
</code>
)
and
the
<del class="diff-old">'http'
</del>
<ins class="diff-chg">"http"
</ins>
<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
prefix
</a>
does
not
exist
in
the
context.
</p>
<p>
<del class="diff-old">Term
</del>
<ins class="diff-chg">Term-to-
</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
IRI
</ins></abbr>
expansion
occurs
<del class="diff-old">for
IRIs
</del>
if
the
<del class="diff-old">value
</del>
<ins class="diff-chg">key
</ins>
matches
a
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
defined
within
the
<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
active
context
</a>:
</p>
<del class="diff-old">{
  &quot;&quot;:
</del>
  <div class="example"><div class="example-title"><span>Example 7</span>: Term expansion from context definition</div><pre class="example">{
<ins class="diff-chg">  "<span class="diff">@context</span>":
</ins>
  {
<del class="diff-old">    &quot;&quot;
</del>
<ins class="diff-chg">    "<span class="diff">name</span>": "<span class="diff">http://schema.org/name</span>"
</ins>
...
  },
<del class="diff-old">  &quot;&quot;: &quot;Manu Sporny&quot;,
  &quot;status&quot;: &quot;trollin'&quot;,
</del>
<ins class="diff-chg">  "<span class="diff">name</span>": "Manu Sporny",
  "status": "trollin'",
</ins>
...
}
</pre>
</div>
<p>
<del class="diff-old">Terms
are
case
sensitive.
</del>
JSON
keys
that
do
not
expand
to
an
absolute
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
are
ignored,
or
removed
in
some
cases,
by
the
[
<cite>
<a class="bibref" href="#bib-JSON-LD-API">
JSON-LD-API
</a>
</cite>
].
However,
JSON
keys
that
do
not
include
a
mapping
in
the
<a class="tref internalDFN" title="context" href="#dfn-context">
context
</a>
are
still
considered
valid
expressions
in
JSON-LD
<del class="diff-old">documents
-
the
</del>
<ins class="diff-chg">documents—the
</ins>
keys
just
don't
expand
to
unambiguous
identifiers.
</p>
<p>
<del class="diff-old">Prefixes
are
expanded
when
the
form
of
the
value
is
a
compact
IRI
represented
as
a
prefix:suffix
combination,
and
the
prefix
matches
a
term
defined
within
the
active
context
:
{
  &quot;&quot;:
  {
    &quot;&quot;
...
  },
  &quot;&quot;: &quot;Manu Sporny&quot;,
...
}
foaf:name
above
will
automatically
expand
out
to
the
IRI
http://xmlns.com/foaf/0.1/name
.
See
6.1
Compact
IRIs
for
more
details.
It
is
often
common
that
</del>
<ins class="diff-chg">At
times,
</ins>
all
<del class="diff-old">types
and
</del>
properties
<ins class="diff-new">and
types
may
</ins>
come
from
the
same
vocabulary.
JSON-LD's
<code>
@vocab
</code>
keyword
allows
<ins class="diff-new">an
author
</ins>
to
set
a
common
prefix
to
be
used
for
all
properties
and
types
that
<del class="diff-old">neither
</del>
<ins class="diff-chg">do
not
</ins>
match
a
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
<del class="diff-old">nor
</del>
<ins class="diff-chg">or
are
neither
</ins>
a
<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
compact
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
<del class="diff-old">or
</del>
<ins class="diff-chg">nor
</ins>
an
<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
absolute
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
(i.e.,
<ins class="diff-new">they
</ins>
do
not
contain
a
colon).
</p>
<del class="diff-old">{
  &quot;@context&quot;: {
    &quot;@vocab&quot;: &quot;http://xmlns.com/foaf/1.0/&quot;
</del>
  <div class="example"><div class="example-title"><span>Example 8</span>: Using a common vocabulary prefix</div><pre class="example">{
  <span class="diff">"@context": {
<ins class="diff-chg">    "@vocab": "http://schema.org/"
</ins>
  },</span>
<del class="diff-old">  &quot;@type&quot;: ,
  : &quot;Manu Sporny&quot;,
</del>
<ins class="diff-chg">  "@type": <span class="diff">"Person"</span>,
</ins>  <span class="diff">"name"</span>: "Manu Sporny",
}
</pre>
</div>
<p>
An
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
is
generated
when
a
<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
JSON
object
</a>
is
used
in
the
value
position
<del class="diff-old">that
</del>
<ins class="diff-chg">and
</ins>
contains
an
<code>
@id
</code>
keyword:
</p>
<del class="diff-old">{
</del>
  <div class="example"><div class="example-title"><span>Example 9</span>: Expanded IRI definition</div><pre class="example">{
...
<del class="diff-old">  &quot;homepage&quot;: { &quot;&quot;: &quot;http://manu.sporny.org&quot; }
</del>
<ins class="diff-chg">  "homepage": { "<span class="diff">@id</span>": "http://manu.sporny.org" }
</ins>
...
}
</pre>
</div>
<p>
Specifying
a
<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
JSON
object
</a>
with
an
<code>
@id
</code>
key
is
used
to
identify
that
<a class="tref internalDFN" title="node" href="#dfn-node">
node
</a>
using
an
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>.
<del class="diff-old">When
the
object
has
only
the
@id
,
it
is
called
a
node
object
.
</del>
This
facility
may
also
be
used
to
link
to
another
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
object
</a>
using
a
mechanism
called
<a class="tref internalDFN" title="embedding" href="#dfn-embedding">
embedding
</a>,
which
is
covered
in
the
section
titled
<a href="#embedding" class="sec-ref">
<span class="secno">
6.10
</span>
<span class="sec-title">
Embedding
</span>
</a>.
</p>
<p>
If
type
<a class="tref internalDFN" title="coercion" href="#dfn-coercion">
coercion
</a>
rules
are
specified
in
the
<code>
@context
</code>
for
a
particular
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
or
property
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>,
an
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
is
generated:
</p>
<del class="diff-old">  &quot;@context&quot;:
</del>
  <div class="example"><div class="example-title"><span>Example 10</span>: Type coercion</div><pre class="example">{<span class="diff">
<ins class="diff-chg">  "@context":
</ins>
  {
    ...
<del class="diff-old">    &quot;homepage&quot;:
</del>
<ins class="diff-chg">    "homepage":
</ins>
    {
<del class="diff-old">      &quot;@id&quot;: &quot;http://xmlns.com/foaf/0.1/homepage&quot;,
      &quot;@type&quot;: &quot;@id&quot;
</del>
<ins class="diff-chg">      "@id": "http://schema.org/homepage",
      "@type": "@id"
</ins>
    }
    ...
  }</span>
...
<del class="diff-old">  &quot;homepage&quot;: &quot;http://manu.sporny.org/&quot;,
</del>
<ins class="diff-chg">  "homepage": "http://manu.sporny.org/",
</ins>
...
}
</pre>
</div>
<p>
In
the
example
above,
even
though
the
value
<code>
http://manu.sporny.org/
</code>
is
expressed
as
a
JSON
<a class="tref internalDFN" title="string" href="#dfn-string">
string
</a>,
the
type
<a class="tref internalDFN" title="coercion" href="#dfn-coercion">
coercion
</a>
rules
will
transform
the
value
into
an
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
when
generating
the
<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
JSON-LD
graph
</a>.
<ins class="diff-new">See
</ins><a href="#type-coercion" class="sec-ref"><span class="secno"><ins class="diff-new">
6.3
</ins></span><span class="sec-title"><ins class="diff-new">
Type
Coercion
</ins></span></a><ins class="diff-new">
for
more
details
about
this
feature.
</ins>
</p>
<p>
<ins class="diff-new">In
summary,
</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><ins class="diff-new">
IRIs
</ins></a><ins class="diff-new">
can
be
expressed
in
a
variety
of
different
ways
in
JSON-LD:
</ins></p><ol><li><a class="tref internalDFN" title="json_object" href="#dfn-json_object"><ins class="diff-new">
JSON
object
</ins></a><ins class="diff-new">
keys
that
have
a
</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-new">
term
</ins></a><ins class="diff-new">
mapping
in
the
</ins><a class="tref internalDFN" title="active_context" href="#dfn-active_context"><ins class="diff-new">
active
context
</ins></a><ins class="diff-new">
expand
to
an
</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
IRI
</ins></abbr></a><ins class="diff-new">
(only
applies
outside
of
the
</ins><a class="tref internalDFN" title="context_definition" href="#dfn-context_definition"><ins class="diff-new">
context
definition
</ins></a><ins class="diff-new">
).
</ins></li><li><ins class="diff-new">
If
there
is
a
</ins><code><ins class="diff-new">
@vocab
</ins></code><ins class="diff-new">
mapping
in
the
active
context,
</ins><a class="tref internalDFN" title="json_object" href="#dfn-json_object"><ins class="diff-new">
JSON
object
</ins></a><ins class="diff-new">
keys
without
an
explicit
mapping
in
the
</ins><a class="tref internalDFN" title="active_context" href="#dfn-active_context"><ins class="diff-new">
active
context
</ins></a><ins class="diff-new">
are
expanded
to
an
</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
IRI
</ins></abbr></a>.</li><li><ins class="diff-new">
An
</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
IRI
</ins></abbr></a><ins class="diff-new">
is
generated
for
the
</ins><a class="tref internalDFN" title="string" href="#dfn-string"><ins class="diff-new">
string
</ins></a><ins class="diff-new">
value
specified
using
</ins><code><ins class="diff-new">
@id
</ins></code><ins class="diff-new">
or
</ins><code><ins class="diff-new">
@type
</ins></code>.</li><li><ins class="diff-new">
An
</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
IRI
</ins></abbr></a><ins class="diff-new">
is
generated
for
the
</ins><a class="tref internalDFN" title="string" href="#dfn-string"><ins class="diff-new">
string
</ins></a><ins class="diff-new">
value
of
any
key
for
which
there
are
</ins><a class="tref internalDFN" title="coercion" href="#dfn-coercion"><ins class="diff-new">
coercion
</ins></a><ins class="diff-new">
rules
that
contain
a
</ins><code><ins class="diff-new">
@type
</ins></code><ins class="diff-new">
key
that
is
set
to
a
value
of
</ins><code><ins class="diff-new">
@id
</ins></code>.</li></ol>
</section>
<section id="node-identifiers">
<h3>
<span class="secno">
<del class="diff-old">5.4
</del>
<ins class="diff-chg">5.3
</ins>
</span>
Node
Identifiers
</h3>
<p>
To
be
able
to
externally
reference
<a class="tref internalDFN" title="node" href="#dfn-node">
nodes
</a>
in
a
<del class="diff-old">graph,
</del>
<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
<ins class="diff-chg">graph
</ins></a>,
it
is
important
that
each
<a class="tref internalDFN" title="node" href="#dfn-node">
node
</a>
<del class="diff-old">has
</del>
<ins class="diff-chg">have
</ins>
an
unambiguous
identifier.
<a class="tref internalDFN" title="iri" href="#dfn-iri">
IRIs
</a>
are
a
fundamental
concept
of
<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
Linked
Data
</a>,
and
<a class="tref internalDFN" title="node" href="#dfn-node">
nodes
</a>
should
have
a
<del class="diff-old">de-referencable
</del>
<ins class="diff-chg">de-referenceable
</ins>
identifier
used
to
name
and
locate
them.
For
<a class="tref internalDFN" title="node" href="#dfn-node">
nodes
</a>
to
be
truly
linked,
de-referencing
the
identifier
should
result
in
a
representation
of
that
<a class="tref internalDFN" title="node" href="#dfn-node">
node
<del class="diff-old">(for
example,
using
a
URL
to
retrieve
a
web
page).
</del>
</a>.
Associating
an
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
with
a
<a class="tref internalDFN" title="node" href="#dfn-node">
node
</a>
tells
an
application
that
<ins class="diff-new">it
can
fetch
</ins>
the
<del class="diff-old">returned
document
contains
</del>
<ins class="diff-chg">resource
associated
with
the
</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
IRI
</ins></abbr><ins class="diff-chg">
and
get
back
</ins>
a
description
of
the
<a class="tref internalDFN" title="node" href="#dfn-node">
node
<del class="diff-old">requested.
</del>
</a>.
</p>
<p>
<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
JSON-LD
documents
</a>
may
also
contain
descriptions
of
other
<del class="diff-old">nodes,
</del>
<a class="tref internalDFN" title="node" href="#dfn-node">
<ins class="diff-chg">nodes
</ins></a>,
so
it
is
necessary
to
be
able
to
uniquely
identify
each
<a class="tref internalDFN" title="node" href="#dfn-node">
node
<del class="diff-old">which
may
be
externally
referenced.
</del>
</a>
<ins class="diff-chg">so
that
the
data
is
associated
with
the
correct
</ins><a class="tref internalDFN" title="node" href="#dfn-node"><ins class="diff-chg">
node
</ins></a><ins class="diff-chg">
in
an
unambiguous
way.
</ins>
</p>
<p>
<del class="diff-old">The
</del>
<ins class="diff-chg">A
</ins><a class="tref internalDFN" title="node" href="#dfn-node">
node
<del class="diff-old">of
a
JSON
object
</del>
</a>
is
identified
using
the
<code>
@id
</code>
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>:
</p>
<del class="diff-old">{
  &quot;@context&quot;:
</del>
  <div class="example"><div class="example-title"><span>Example 11</span>: Identifying a node</div><pre class="example">{
<ins class="diff-chg">  "@context":
</ins>
  {
    ...
<del class="diff-old">    &quot;homepage&quot;:
</del>
<ins class="diff-chg">    "homepage":
</ins>
    {
<del class="diff-old">      &quot;@id&quot;: &quot;http://xmlns.com/foaf/0.1/homepage&quot;,
      &quot;@type&quot;: &quot;@id&quot;
</del>
<ins class="diff-chg">      "@id": "http://schema.org/homepage",
      "@type": "@id"
</ins>
    }
<del class="diff-old">    ...
</del>
  },
<del class="diff-old">  &quot;&quot;,
  &quot;homepage&quot;: &quot;http://manu.sporny.org/&quot;,
...
</del>
<ins class="diff-chg">  "<span class="diff">@id</span>": "<span class="diff">http://example.org/people#joebob</span>",
  "homepage": "http://joebob.example.com/",
  ...
</ins>
}
</pre>
</div>
<p>
The
example
above
contains
a
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
object
</a>
identified
by
the
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
<code>
http://example.org/people#joebob
</code>.
</p>
<del class="diff-old">Once
defined,
the
node
's
unique
identifier
can
be
used
to
refer
to
it
from
other
parts
of
the
document
or
from
external
documents,
using
a
node
object
that
only
contains
an
@id
key:
{
  &quot;@context&quot;: ...,
  &quot;@graph&quot;: [
    {
      &quot;@id&quot;: &quot;http://example.org/library&quot;,
      &quot;@type&quot;: &quot;ex:Library&quot;,
      
    }, {
      &quot;@id&quot;: &quot;http://example.org/library/the-republic&quot;,
      &quot;@type&quot;: &quot;ex:Book&quot;,
      &quot;dc:creator&quot;: &quot;Plato&quot;,
      &quot;dc:title&quot;: &quot;The Republic&quot;,
      
    }, {
      &quot;@id&quot;: &quot;http://example.org/library/the-republic#introduction&quot;,
      &quot;@type&quot;: &quot;ex:Chapter&quot;,
      &quot;dc:description&quot;: &quot;An introductory chapter on The Republic.&quot;,
      &quot;dc:title&quot;: &quot;The Introduction&quot;
    }
  ]
}
}
</del>
</section>
<section id="specifying-the-type">
<h3>
<span class="secno">
<del class="diff-old">5.5
</del>
<ins class="diff-chg">5.4
</ins>
</span>
Specifying
the
Type
</h3>
<p>
The
type
of
a
particular
node
can
be
specified
using
the
<code>
@type
</code>
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>.
In
<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
Linked
Data
</a>,
types
are
uniquely
identified
with
an
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>.
</p>
<del class="diff-old">{
</del>
<div class="example"><div class="example-title"><span>Example 12</span>: Specifying the type for a node</div><pre class="example">{
...
<del class="diff-old">  &quot;@id&quot;: &quot;http://example.org/people#joebob&quot;,
  &quot;&quot;,
</del>
<ins class="diff-chg">  "@id": "http://example.org/places#BrewEats",
  "<span class="diff">@type</span>": "<span class="diff">http://schema.org/Restaurant</span>",
</ins>
...
}
</pre>
</div>
<p>
A
node
can
be
assigned
more
than
one
type
by
using
<del class="diff-old">the
following
markup
pattern:
</del>
<ins class="diff-chg">an
</ins><a class="tref internalDFN" title="array" href="#dfn-array"><ins class="diff-chg">
array
</ins></a>:
</p>
<del class="diff-old">{
</del>
<div class="example"><div class="example-title"><span>Example 13</span>: Specifying multiple types for a node</div><pre class="example">{
...
<del class="diff-old">  &quot;@id&quot;: &quot;http://example.org/places#BrewEats&quot;,
  &quot;
</del>
<ins class="diff-chg">  "@id": "http://example.org/places#BrewEats",
  "<span class="diff">@type</span>": <span class="diff">[ "http://schema.org/Restaurant", "http://schema.org/Brewery" ],</span>
</ins>
...
}
</pre>
</div>
<p>
The
value
of
a
<code>
@type
</code>
key
may
also
be
a
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
defined
in
the
<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
active
context
</a>:
</p>
<del class="diff-old">{
  &quot;@context&quot;: &quot;http://json-ld.org/contexts/person.jsonld&quot;,
  &quot;@id&quot;: &quot;http://manu.sporny.org/i/public&quot;,
  ,
  &quot;name&quot;: &quot;Manu Sporny&quot;,
  &quot;homepage&quot;: &quot;http://manu.sporny.org/&quot;,
  &quot;depiction&quot;: &quot;http://twitter.com/account/profile_image/manusporny&quot;
}
5.6
String
Internationalization
At
times,
it
is
important
to
annotate
a
string
with
its
language.
In
JSON-LD
this
is
possible
in
a
variety
of
ways.
Firstly,
it
is
possible
to
define
a
default
language
for
a
JSON-LD
document
by
setting
the
@language
key
in
the
@context
or
in
a
term
definition:
{
  &quot;@context&quot;:
  {
    ...
    &quot;@language&quot;: &quot;ja&quot;
  },
  &quot;name&quot;: ,
  &quot;occupation&quot;: 
}
The
example
above
would
associate
the
ja
language
code
with
the
two
strings
花澄
and
科学者
.
Languages
codes
are
defined
in
[
BCP47
].
It
is
possible
to
override
the
default
language
by
using
an
expanded
value
:
{
  &quot;@context&quot;: {
    ...
    &quot;@language&quot;: &quot;ja&quot;
  },
  &quot;name&quot;: &quot;花澄&quot;,
  &quot;occupation&quot;: {
    &quot;@value&quot;: &quot;Scientist&quot;,
    &quot;@language&quot;: &quot;en&quot;
  }
}
It
is
also
possible
to
override
the
default
language
or
specify
a
plain
value
by
omitting
the
@language
tag
or
setting
it
to
null
when
expressing
the
expanded
value
:
{
  &quot;@context&quot;: {
    ...
    &quot;@language&quot;: &quot;ja&quot;
  },
  &quot;name&quot;: {
    &quot;@value&quot;: &quot;Frank&quot;
  },
  &quot;occupation&quot;:  {
    &quot;@value&quot;: &quot;Ninja&quot;,
    &quot;@language&quot;: &quot;en&quot;
  },
  &quot;speciality&quot;: &quot;手裏剣&quot;
}
Please
note
that
language
associations
can
only
be
applied
to
plain
literal
strings
.
That
is,
typed
values
or
values
that
are
subject
to
6.6
Type
Coercion
cannot
be
language
tagged.
To
clear
the
default
language
for
a
subtree,
@language
can
be
set
to
null
in
a
local
context
as
follows:
{
  &quot;@context&quot;: {
</del>
<div class="example"><div class="example-title"><span>Example 14</span>: Using a term to specify the type</div><pre class="example">{
<ins class="diff-chg">  "@context": {
</ins>
    ...
<del class="diff-old">    &quot;@language&quot;: &quot;ja&quot;
  },
  &quot;name&quot;: &quot;花澄&quot;,
  &quot;details&quot;: {
    &quot;@context&quot;: {
      &quot;@language&quot;: null
    },
    &quot;occupation&quot;: &quot;Ninja&quot;
</del>
    <span class="diff">"Restaurant": "http://schema.org/Restaurant", </span>
    <span class="diff">"Brewery": "http://schema.org/Brewery"</span>
  }
<ins class="diff-new">  "@id": "http://example.org/places#BrewEats",
</ins>  <span class="diff">"@type": ["Restaurant", "Brewery"]</span>,<ins class="diff-new">
  ...
</ins>
}
</pre>
</div>
<del class="diff-old">Note
JSON-LD
allows
one
to
associate
language
information
with
terms
.
See
6.5
Expanded
Term
Definition
for
more
details.
5.7
JSON-LD
Syntax
A
JSON-LD
document
is
first,
and
foremost,
a
JSON
document
(as
defined
in
[
RFC4627
]).
However,
JSON-LD
describes
a
specific
syntax
to
use
for
expressing
Linked
Data.
This
includes
the
use
of
specific
keywords,
as
identified
in
3.2
Syntax
Tokens
and
Keywords
for
expressing
node
objects
,
values,
and
the
context
.
See
B.
JSON-LD
Grammar
for
authoring
guidelines.
</del>
</section>
</section>
<section id="advanced-concepts">
<h2>
<span class="secno">
6.
</span>
Advanced
Concepts
</h2>
<em>
This
section
is
normative.
</em>
<p>
JSON-LD
has
a
number
of
features
that
provide
functionality
above
and
beyond
the
core
functionality
described
above.
The
following
section
describes
this
advanced
functionality
in
more
detail.
</p>
<section id="compact-iris">
<h3>
<span class="secno">
6.1
</span>
Compact
IRIs
</h3>
<p>
<ins class="diff-new">A
document
on
the
Web
that
defines
one
or
more
IRIs
for
use
as
</ins><a class="tref internalDFN" title="property" href="#dfn-property"><ins class="diff-new">
properties
</ins></a><ins class="diff-new">
in
Linked
Data
is
called
a
</ins><dfn title="vocabulary" id="dfn-vocabulary"><ins class="diff-new">
vocabulary
</ins></dfn>.
<a class="tref internalDFN" title="term" href="#dfn-term">
Terms
</a>
in
<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
Linked
Data
</a>
documents
may
draw
from
a
number
of
different
<a class="tref internalDFN" title="vocabulary" href="#dfn-vocabulary">
vocabularies
<del class="diff-old">.
</del>
</a>
<ins class="diff-chg">s.
</ins>
At
times,
declaring
every
single
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
that
a
document
uses
can
require
the
developer
to
declare
tens,
if
not
hundreds
of
potential
vocabulary
<a class="tref internalDFN" title="term" href="#dfn-term">
terms
</a>
that
are
used
across
an
application.
This
is
a
concern
for
at
least
two
reasons:
the
first
is
the
cognitive
load
on
the
developer
of
remembering
all
of
the
<a class="tref internalDFN" title="term" href="#dfn-term">
terms
</a>,
and
the
second
is
the
serialized
size
of
the
<a class="tref internalDFN" title="context" href="#dfn-context">
context
</a>
if
it
is
specified
inline.
In
order
to
address
these
issues,
the
concept
of
a
<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
compact
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
is
introduced.
</p>
<p>
A
<dfn title="compact_iri" id="dfn-compact_iri">
compact
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</dfn>
is
a
way
of
expressing
an
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
using
a
<em>
prefix
</em>
and
<em>
suffix
</em>
separated
by
a
colon
(
<code>:
</code>
)
which
is
similar
to
the
<cite>
<a href="http://www.w3.org/TR/rdfa-core/#s_curies">
CURIE
Syntax
</a>
</cite>
in
[
<cite>
<a class="bibref" href="#bib-RDFA-CORE">
RDFA-CORE
</a>
</cite>
].
The
<dfn title="prefix" id="dfn-prefix">
prefix
</dfn>
is
a
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
taken
from
the
<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
active
context
</a>
and
is
a
short
string
identifying
a
particular
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
in
a
JSON-LD
document.
For
example,
the
prefix
<code>
foaf
</code>
may
be
used
as
a
short
hand
for
the
Friend-of-a-Friend
vocabulary,
which
is
identified
using
the
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
<code>
http://xmlns.com/foaf/0.1/
</code>.
A
developer
may
append
any
of
the
FOAF
vocabulary
terms
to
the
end
of
the
prefix
to
specify
a
short-hand
version
of
the
<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
absolute
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
for
the
vocabulary
term.
For
example,
<code>
foaf:name
</code>
would
be
expanded
out
to
the
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
<code>
http://xmlns.com/foaf/0.1/name
</code>.
Instead
of
having
to
remember
and
type
out
the
entire
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>,
the
developer
can
instead
use
the
prefix
in
their
JSON-LD
markup.
</p>
<p>
<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
<ins class="diff-new">Prefixes
</ins></a><ins class="diff-new">
are
expanded
when
the
form
of
the
value
is
a
</ins><a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri"><ins class="diff-new">
compact
</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
IRI
</ins></abbr></a><ins class="diff-new">
represented
as
a
</ins><code><ins class="diff-new">
prefix:suffix
</ins></code><ins class="diff-new">
combination,
and
the
prefix
matches
a
</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-new">
term
</ins></a><ins class="diff-new">
defined
within
the
</ins><a class="tref internalDFN" title="active_context" href="#dfn-active_context"><ins class="diff-new">
active
context
</ins></a>:</p>  <div class="example"><div class="example-title"><span>Example 15</span>: Prefix expansion</div><pre class="example">{<ins class="diff-new">
  "<span class="diff">@context</span>":
  {
    "<span class="diff">foaf</span>": "<span class="diff">http://xmlns.com/foaf/0.1/</span>"
...
  },
  "<span class="diff">foaf:name</span>": "Dave Longley",
...
}
</ins></pre></div><p><code><ins class="diff-new">
foaf:name
</ins></code><ins class="diff-new">
above
will
automatically
expand
out
to
the
</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
IRI
</ins></abbr><code><ins class="diff-new">
http://xmlns.com/foaf/0.1/name
</ins></code>.</p><p>
Terms
are
interpreted
as
<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
compact
IRIs
</a>
if
they
contain
at
least
one
colon
and
the
first
colon
is
not
followed
by
two
slashes
(
<code>
//
</code>,
as
in
<code>
http://example.com
</code>
).
To
generate
the
full
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>,
the
value
is
first
split
into
a
<em>
prefix
</em>
and
<em>
suffix
</em>
at
the
first
occurrence
of
a
colon
(
<code>:
</code>
).
If
the
<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
active
context
</a>
contains
a
term
mapping
for
<em>
prefix
</em>,
an
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
is
generated
by
prepending
the
mapped
<em>
prefix
</em>
to
the
(possibly
empty)
<em>
suffix
</em>
using
textual
concatenation.
If
no
prefix
mapping
is
defined,
the
value
is
interpreted
as
an
<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
absolute
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>.
If
the
prefix
is
an
underscore
(
<code>
_
</code>
),
the
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
remains
unchanged.
</p>
<p>
Consider
the
following
example:
</p>
<del class="diff-old">  {
  &quot;@context&quot;:
</del>
  <div class="example"><div class="example-title"><span>Example 16</span>: Compact IRIs</div><pre class="example">{
<ins class="diff-chg">  "@context":
</ins>
  {
<del class="diff-old">    
    
</del>
    <span class="diff">"dc": "http://purl.org/dc/elements/1.1/",</span>
    <span class="diff">"ex": "http://example.org/vocab#"</span>
  },
<del class="diff-old">  &quot;@id&quot;: &quot;http://example.org/library&quot;,
  &quot;@type&quot;: ,
  :
</del>
<ins class="diff-chg">  "@id": "http://example.org/library",
  "@type": <span class="diff">"ex:Library"</span>,
</ins>  <span class="diff">"ex:contains"</span>:
  {
<del class="diff-old">    &quot;@id&quot;: &quot;http://example.org/library/the-republic&quot;,
    &quot;@type&quot;: ,
    : &quot;Plato&quot;,
    : &quot;The Republic&quot;,
    :
</del>
<ins class="diff-chg">    "@id": "http://example.org/library/the-republic",
    "@type": <span class="diff">"ex:Book"</span>,
</ins>    <span class="diff">"dc:creator"</span>: "Plato",    <span class="diff">"dc:title"</span>: "The Republic",    <span class="diff">"ex:contains"</span>:
    {
<del class="diff-old">      &quot;@id&quot;: &quot;http://example.org/library/the-republic#introduction&quot;,
      &quot;@type&quot;: ,
      : &quot;An introductory chapter on The Republic.&quot;,
      : &quot;The Introduction&quot;
</del>
<ins class="diff-chg">      "@id": "http://example.org/library/the-republic#introduction",
      "@type": <span class="diff">"ex:Chapter"</span>,
</ins>      <span class="diff">"dc:description"</span>: "An introductory chapter on The Republic.",      <span class="diff">"dc:title"</span>: "The Introduction"
    }
  }
}
</pre>
</div>
<p>
In
this
example,
two
different
vocabularies
are
referred
to
using
prefixes.
Those
prefixes
are
then
used
as
type
and
property
values
using
the
compact
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
<code>
prefix:suffix
</code>
notation.
</p>
<p>
It's
also
possible
to
use
compact
IRIs
within
the
context
as
shown
in
the
following
example:
</p>
<del class="diff-old">  {
  &quot;@context&quot;:
</del>
  <div class="example"><div class="example-title"><span>Example 17</span>: Using vocabularies</div><pre class="example">{
<ins class="diff-chg">  "@context":
</ins>
  {
<del class="diff-old">    &quot;xsd&quot;: &quot;http://www.w3.org/2001/XMLSchema#&quot;,
    &quot;foaf&quot;: &quot;http://xmlns.com/foaf/0.1/&quot;,
    : { &quot;@type&quot;: &quot;@id&quot; },
    &quot;picture&quot;: { &quot;@id&quot;: , &quot;@type&quot;: &quot;@id&quot; }
</del>
<ins class="diff-chg">    "xsd": "http://www.w3.org/2001/XMLSchema#",
</ins>    <span class="diff">"foaf": "http://xmlns.com/foaf/0.1/"</span>,    <span class="diff">"foaf:homepage"</span>: { "@type": "@id" },<ins class="diff-chg">
    "picture": { "@id": <span class="diff">"foaf:depiction"</span>, "@type": "@id" }
</ins>
  },
<del class="diff-old">  &quot;@id&quot;: &quot;http://me.markus-lanthaler.com/&quot;,
  &quot;@type&quot;: &quot;foaf:Person&quot;,
  &quot;foaf:name&quot;: &quot;Markus Lanthaler&quot;,
  &quot;foaf:homepage&quot;: &quot;http://www.markus-lanthaler.com/&quot;,
  &quot;picture&quot;: &quot;http://twitter.com/account/profile_image/markuslanthaler&quot;
</del>
<ins class="diff-chg">  "@id": "http://me.markus-lanthaler.com/",
  "@type": "foaf:Person",
  "foaf:name": "Markus Lanthaler",
  "foaf:homepage": "http://www.markus-lanthaler.com/",
  "picture": "http://twitter.com/account/profile_image/markuslanthaler"
</ins>
}
</pre>
</div>
</section>
<section id="typed-values">
<h3>
<span class="secno">
6.2
</span>
Typed
Values
</h3>
<p>
A
value
with
an
associated
type,
also
known
as
a
<a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">
typed
value
</a>,
is
indicated
by
associating
a
value
with
an
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
which
indicates
the
value's
type.
Typed
values
may
be
expressed
in
JSON-LD
in
three
ways:
</p>
<ol>
<li>
By
utilizing
the
<code>
@type
</code>
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>
when
defining
a
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
within
a
<code>
@context
</code>
section.
</li>
<li>
By
utilizing
an
<a class="tref internalDFN" title="expanded_typed_value" href="#dfn-expanded_typed_value">
expanded
typed
value
</a>.
</li>
<li>
By
using
a
native
JSON
type
such
as
<a class="tref internalDFN" title="number" href="#dfn-number">
number
</a>,
<a class="tref internalDFN" title="true" href="#dfn-true">
true
</a>,
or
<a class="tref internalDFN" title="false" href="#dfn-false">
false
</a>.
</li>
</ol>
<p>
The
first
example
uses
the
<code>
@type
</code>
keyword
to
associate
a
type
with
a
particular
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
in
the
<code>
@context
</code>:
</p>
<del class="diff-old">{
  &quot;@context&quot;:
</del>
<div class="example"><div class="example-title"><span>Example 18</span>: Expanded term definition with type coercion</div><pre class="example">{
  <span class="diff">"@context":
  {
<del class="diff-old">    &quot;modified&quot;:
</del>
<ins class="diff-chg">    "modified":
</ins>
    {
<del class="diff-old">      &quot;@id&quot;: &quot;http://purl.org/dc/terms/modified&quot;,
      &quot;@type&quot;: &quot;http://www.w3.org/2001/XMLSchema#dateTime&quot;
</del>
<ins class="diff-chg">      "@id": "http://purl.org/dc/terms/modified",
      "@type": "http://www.w3.org/2001/XMLSchema#dateTime"
</ins>
    }
  },</span>
...
<del class="diff-old">  &quot;modified&quot;: &quot;2010-05-29T14:17:39+02:00&quot;,
</del>
<ins class="diff-chg">  "@id": "http://example.com/docs/1",
  "modified": "2010-05-29T14:17:39+02:00",
</ins>
...
}
</pre>
</div>
<p>
The
<em>
modified
</em>
key's
value
above
is
automatically
type
coerced
to
a
<del class="diff-old">datetime
</del>
<ins class="diff-chg">dateTime
</ins>
value
because
of
the
information
specified
in
the
<code>
@context
</code>.
<ins class="diff-new">A
JSON-LD
processor
will
interpret
the
markup
above
like
so:
</ins>
</p>
<table class="example">
<thead>
<tr>
<th>
<ins class="diff-new">Subject
</ins></th><th><ins class="diff-new">
Property
</ins></th><th><ins class="diff-new">
Value
</ins></th><th><ins class="diff-new">
Value
Type
</ins></th></tr></thead><tbody><tr><td><ins class="diff-new">
http://example.com/docs/1
</ins></td><td><ins class="diff-new">
http://purl.org/dc/terms/modified
</ins></td><td><ins class="diff-new">
2010-05-29T14:17:39+02:00
</ins></td><td><ins class="diff-new">
http://www.w3.org/2001/XMLSchema#dateTime
</ins></td></tr></tbody></table>
<p>
The
second
example
uses
the
expanded
form
of
setting
the
type
information
in
the
body
of
a
JSON-LD
document:
</p>
<del class="diff-old">{
  &quot;@context&quot;:
</del>
<div class="example"><div class="example-title"><span>Example 19</span>: Expanded value with type</div><pre class="example">{
<ins class="diff-chg">  "@context":
</ins>
  {
<del class="diff-old">    &quot;modified&quot;:
</del>
<ins class="diff-chg">    "modified":
</ins>
    {
<del class="diff-old">      &quot;@id&quot;: &quot;http://purl.org/dc/terms/modified&quot;
</del>
<ins class="diff-chg">      "@id": "http://purl.org/dc/terms/modified"
</ins>
    }
  },
...
<del class="diff-old">  &quot;modified&quot;:
</del>
<ins class="diff-chg">  "modified":
</ins>
  <span class="diff">{
<del class="diff-old">    &quot;@value&quot;: &quot;2010-05-29T14:17:39+02:00&quot;,
    &quot;@type&quot;: &quot;http://www.w3.org/2001/XMLSchema#dateTime&quot;
</del>
<ins class="diff-chg">    "@value": "2010-05-29T14:17:39+02:00",
    "@type": "http://www.w3.org/2001/XMLSchema#dateTime"
</ins>
  }</span>
...
}
</pre>
</div>
<p>
Both
examples
above
would
generate
the
value
<code>
2010-05-29T14:17:39+02:00
</code>
with
the
type
<code>
http://www.w3.org/2001/XMLSchema#dateTime
</code>.
Note
that
it
is
also
possible
to
use
a
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
or
a
<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
compact
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
to
express
the
value
of
a
type.
</p>
<p>
The
<code>
@type
</code>
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>
is
also
used
to
associate
a
type
with
a
<a class="tref internalDFN" title="node" href="#dfn-node">
node
</a>.
The
concept
of
a
<a class="tref internalDFN" title="node_type" href="#dfn-node_type">
node
type
</a>
and
a
<a class="tref internalDFN" title="value_type" href="#dfn-value_type">
value
type
</a>
are
different.
<del class="diff-old">This
</del>
</p>
<p>
<ins class="diff-chg">Generally
speaking,
a
</ins><dfn title="node_type" id="dfn-node_type"><ins class="diff-chg">
node
type
</ins></dfn><ins class="diff-chg">
specifies
the
type
of
thing
that
</ins>
is
<del class="diff-old">similar
to
object-oriented
programming
languages
where
both
scalar
and
structured
types
use
</del>
<ins class="diff-chg">being
described,
like
a
person,
place,
event,
or
web
page.
A
</ins><dfn title="value_type" id="dfn-value_type"><ins class="diff-chg">
value
type
</ins></dfn><ins class="diff-chg">
specifies
</ins>
the
<del class="diff-old">same
class
inheritance
mechanism,
even
though
scalar
types
and
structured
types
are
inherently
different.
</del>
<ins class="diff-chg">unit
of
measurement
for
a
particular
value,
such
as
a
date,
meter,
or
light
year.
</ins>
</p>
<del class="diff-old">{
</del>
<div class="example"><div class="example-title"><span>Example 20</span>: Example demonstrating the context-sensitivity for @type</div><pre class="example">{
...
<del class="diff-old">  &quot;@id&quot;: &quot;http://example.org/posts#TripToWestVirginia&quot;,
  ,
  &quot;modified&quot;:
</del>
<ins class="diff-chg">  "@id": "http://example.org/posts#TripToWestVirginia",
</ins>  <span class="diff">"@type": "http://schema.org/BlogPosting"</span>,   &lt;--- This is a node type<ins class="diff-chg">
  "modified":
</ins>
  {
<del class="diff-old">    &quot;@value&quot;: &quot;2010-05-29T14:17:39+02:00&quot;,
    
</del>
<ins class="diff-chg">    "@value": "2010-05-29T14:17:39+02:00",
</ins>    <span class="diff">"@type": "http://www.w3.org/2001/XMLSchema#dateTime"</span> &lt;--- This is a value type
  }
...
}
</pre>
</div>
<p>
The
first
use
of
<code>
@type
</code>
associates
a
<a class="tref internalDFN" title="node_type" href="#dfn-node_type">
node
type
</a>
(
<code>
http://schema.org/BlogPosting
</code>
)
with
the
<a class="tref internalDFN" title="node" href="#dfn-node">
node
</a>,
which
is
expressed
using
the
<code>
@id
</code>
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>.
The
second
use
of
<code>
@type
</code>
associates
a
<a class="tref internalDFN" title="value_type" href="#dfn-value_type">
value
type
</a>
(
<code>
http://www.w3.org/2001/XMLSchema#dateTime
</code>
)
with
the
value
expressed
using
the
<code>
@value
</code>
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>.
As
a
general
rule,
when
<code>
@value
</code>
and
<code>
@type
</code>
are
used
in
the
same
<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
JSON
object
</a>,
the
<code>
@type
</code>
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>
is
expressing
a
<a class="tref internalDFN" title="value_type" href="#dfn-value_type">
value
type
</a>.
Otherwise,
the
<code>
@type
</code>
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>
is
expressing
a
<a class="tref internalDFN" title="node_type" href="#dfn-node_type">
node
type
</a>.
<ins class="diff-new">The
markup
above
expresses
the
following
data:
</ins>
</p>
<table class="example">
<thead>
<tr>
<th>
<ins class="diff-new">Subject
</ins></th><th><ins class="diff-new">
Property
</ins></th><th><ins class="diff-new">
Value
</ins></th><th><ins class="diff-new">
Value
Type
</ins></th></tr></thead><tbody><tr><td><ins class="diff-new">
http://example.org/posts#TripToWestVirginia
</ins></td><td><ins class="diff-new">
http://www.w3.org/1999/02/22-rdf-syntax-ns#type
</ins></td><td><ins class="diff-new">
http://schema.org/BlogPosting
</ins></td><td style="text-align:center;"><ins class="diff-new">
-
</ins></td></tr><tr><td><ins class="diff-new">
http://example.org/posts#TripToWestVirginia
</ins></td><td><ins class="diff-new">
http://purl.org/dc/terms/modified
</ins></td><td><ins class="diff-new">
2010-05-29T14:17:39+02:00
</ins></td><td><ins class="diff-new">
http://www.w3.org/2001/XMLSchema#dateTime
</ins></td></tr></tbody></table>
</section>
<section id="type-coercion">
<h3>
<span class="secno">
6.3
</span>
<del class="diff-old">Language-tagged
Strings
</del>
<ins class="diff-chg">Type
Coercion
</ins>
</h3>
<p>
<del class="diff-old">A
string
with
an
associated
language,
also
known
as
a
language-tagged
string
,
is
indicated
by
associating
a
string
with
</del>
<ins class="diff-chg">JSON-LD
supports
the
coercion
of
values
to
particular
data
types.
Type
</ins><dfn title="coercion" id="dfn-coercion"><ins class="diff-chg">
coercion
</ins></dfn><ins class="diff-chg">
allows
someone
deploying
JSON-LD
to
coerce
the
incoming
or
outgoing
values
to
the
proper
data
type
based
on
</ins>
a
<del class="diff-old">language
code
as
defined
in
[
BCP47
</del>
<ins class="diff-chg">mapping
of
data
type
</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><ins class="diff-chg">
IRIs
</ins>
</a>
<del class="diff-old">].
Language-tagged
strings
may
</del>
<ins class="diff-chg">to
</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
terms
</ins></a>.<ins class="diff-chg">
Using
type
coercion,
value
representation
is
preserved
without
requiring
the
data
type
to
</ins>
be
<del class="diff-old">expressed
in
JSON-LD
in
four
ways:
</del>
<ins class="diff-chg">specified
with
each
piece
of
data.
</ins>
</p>
<del class="diff-old">By
defining
a
global
language
</del>
<p>
<ins class="diff-chg">Type
coercion
is
specified
within
an
</ins><a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition"><ins class="diff-chg">
expanded
term
definition
</ins></a>
using
the
<code>
<del class="diff-old">@language
</del>
<ins class="diff-chg">@type
</ins>
</code>
<ins class="diff-new">key.
The
value
of
this
key
expands
to
an
</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
IRI
</ins></abbr></a>.<ins class="diff-new">
Alternatively,
the
</ins>
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>
<del class="diff-old">within
a
</del>
<code>
<del class="diff-old">@context
</del>
<ins class="diff-chg">@id
</ins>
</code>
<del class="diff-old">section.
By
utilizing
</del>
<ins class="diff-chg">may
be
used
as
value
to
indicate
that
within
</ins>
the
<del class="diff-old">@language
keyword
when
defining
</del>
<ins class="diff-chg">body
of
a
JSON-LD
document,
a
string
value
of
</ins>
a
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
<del class="diff-old">within
a
</del>
<ins class="diff-chg">coerced
to
</ins>
<code>
<del class="diff-old">@context
</del>
<ins class="diff-chg">@id
</ins>
</code>
<del class="diff-old">section.
By
utilizing
</del>
<ins class="diff-chg">is
to
be
interpreted
as
</ins>
an
<del class="diff-old">expanded
language-tagged
string
</del>
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
<ins class="diff-chg">IRI
</ins></abbr>
</a>.
<del class="diff-old">By
utilizing
a
language
map
,
provided
</del>
</p>
<p>
<a class="tref internalDFN" title="term" href="#dfn-term">
<ins class="diff-chg">Terms
</ins></a><ins class="diff-chg">
or
</ins><a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri"><ins class="diff-chg">
compact
IRIs
</ins></a><ins class="diff-chg">
used
as
</ins>
the
<del class="diff-old">underlying
</del>
<ins class="diff-chg">value
of
a
</ins>
<code>
<del class="diff-old">term
</del>
<ins class="diff-chg">@type
</ins>
</code>
<del class="diff-old">is
</del>
<ins class="diff-chg">key
may
be
</ins>
defined
<del class="diff-old">with
</del>
<ins class="diff-chg">within
the
same
context.
This
means
that
one
may
specify
</ins>
a
<del class="diff-old">@container
keyword
</del>
<a class="tref internalDFN" title="term" href="#dfn-term">
<ins class="diff-chg">term
</ins>
</a>
<del class="diff-old">whose
value
is
</del>
<ins class="diff-chg">like
</ins>
<code>
<del class="diff-old">@language
</del>
<ins class="diff-chg">xsd
</ins>
</code>
<del class="diff-old">within
a
</del>
<ins class="diff-chg">and
then
use
</ins>
<code>
<del class="diff-old">@context
</del>
<ins class="diff-chg">xsd:integer
</ins>
</code>
<del class="diff-old">section.
</del>
<ins class="diff-chg">within
the
same
context
definition.
</ins></p>
<p>
The
<del class="diff-old">first
</del>
example
<del class="diff-old">uses
the
@language
keyword
to
associate
a
type
with
</del>
<ins class="diff-chg">below
demonstrates
how
</ins>
a
<del class="diff-old">particular
term
in
the
@context
:
</del>
<ins class="diff-chg">JSON-LD
author
can
coerce
values
to
</ins><a class="tref internalDFN" title="typed_value" href="#dfn-typed_value"><ins class="diff-chg">
typed
values
</ins></a>,<ins class="diff-chg">
IRIs,
and
lists.
</ins>
</p>
<del class="diff-old">{
  &quot;@context&quot;:
</del>
<div class="example"><div class="example-title"><span>Example 21</span>: Expanded term definition with types</div><pre class="example">{
<ins class="diff-chg">  "@context":
</ins>
  {
<del class="diff-old">    &quot;title&quot;:
    {
      &quot;@id&quot;: &quot;http://purl.org/dc/terms/title&quot;,
      &quot;@language&quot;: &quot;en&quot;
    }
  },
...
  &quot;title&quot;: &quot;JSON-LD Syntax&quot;,
...
</del>
<ins class="diff-chg">    "xsd": "http://www.w3.org/2001/XMLSchema#",
    "name": "http://xmlns.com/foaf/0.1/name",
    "age":
</ins>    <span class="diff">{<ins class="diff-chg">
      "@id": "http://xmlns.com/foaf/0.1/age",
      "@type": "xsd:integer"
    }</span>,
    "homepage":
</ins>    <span class="diff">{<ins class="diff-chg">
      "@id": "http://xmlns.com/foaf/0.1/homepage",
      "@type": "@id",
      "@container": "@list"
    }</span>
  },
  "@id": "http://example.com/people#john",
  "name": "John Smith",
  "age": <span class="diff">"41"</span>,
  "homepage":
</ins>  <span class="diff">[<ins class="diff-chg">
    "http://personal.example.org/",
    "http://work.example.com/jsmith/"
  ]</span>
</ins>
}
</pre>
</div>
<p>
The
<del class="diff-old">modified
key's
value
</del>
<ins class="diff-chg">markup
shown
</ins>
above
<del class="diff-old">is
automatically
language
coerced
to
a
English
value
because
of
the
information
specified
in
</del>
<ins class="diff-chg">would
generate
</ins>
the
<del class="diff-old">@context
.
</del>
<ins class="diff-chg">following
data.
</ins>
The
<del class="diff-old">second
example
uses
</del>
<ins class="diff-chg">data
has
no
inherent
order
except
for
</ins>
the
<del class="diff-old">expanded
form
</del>
<ins class="diff-chg">values
</ins>
of
<del class="diff-old">setting
the
language
information
in
</del>
the
<del class="diff-old">body
of
</del>
<code>
<ins class="diff-chg">http://schema.org/homepage
</ins></code><ins class="diff-chg">
property
which
represent
an
ordered
list.
</ins></p><table class="example"><thead><tr><th><ins class="diff-chg">
Subject
</ins></th><th><ins class="diff-chg">
Property
</ins></th><th><ins class="diff-chg">
Value
</ins></th><th><ins class="diff-chg">
Value
Type
</ins></th></tr></thead><tbody><tr><td><ins class="diff-chg">
http://example.com/people#john
</ins></td><td><ins class="diff-chg">
http://xmlns.com/foaf/0.1/name
</ins></td><td><ins class="diff-chg">
John
Smith
</ins></td><td><ins class="diff-chg">
&nbsp;
</ins></td></tr><tr><td><ins class="diff-chg">
http://example.com/people#john
</ins></td><td><ins class="diff-chg">
http://xmlns.com/foaf/0.1/age
</ins></td><td><ins class="diff-chg">
41
</ins></td><td><ins class="diff-chg">
http://www.w3.org/2001/XMLSchema#integer
</ins></td></tr><tr><td rowspan="2"><ins class="diff-chg">
http://example.com/people#john
</ins></td><td rowspan="2"><ins class="diff-chg">
http://xmlns.com/foaf/0.1/homepage
</ins></td><td><ins class="diff-chg">
http://personal.example.org/
</ins></td><td><ins class="diff-chg">
&nbsp;
</ins></td></tr><tr><td><ins class="diff-chg">
http://work.example.com/jsmith/
</ins></td><td><ins class="diff-chg">
&nbsp;
</ins></td></tr></tbody></table><p><ins class="diff-chg">
Terms
may
also
be
defined
using
</ins><a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri"><ins class="diff-chg">
absolute
IRIs
</ins></a><ins class="diff-chg">
or
</ins><a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri"><ins class="diff-chg">
compact
IRIs
</ins></a>.<ins class="diff-chg">
This
allows
coercion
rules
to
be
applied
to
keys
which
are
not
represented
as
</ins>
a
<del class="diff-old">JSON-LD
document:
</del>
<ins class="diff-chg">simple
</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
term
</ins></a>.<ins class="diff-chg">
For
example:
</ins>
</p>
<del class="diff-old">{
  &quot;@context&quot;:
</del>
<div class="example"><div class="example-title"><span>Example 22</span>: Term definitions using compact and absolute IRIs</div><pre class="example">{
<ins class="diff-chg">  "@context":
</ins>
  {
<del class="diff-old">    &quot;title&quot;:
</del>
<ins class="diff-chg">    "foaf": "http://xmlns.com/foaf/0.1/",
    "<span class="diff">foaf:age</span>":
</ins>
    {
<del class="diff-old">      &quot;@id&quot;: &quot;http://purl.org/dc/terms/title&quot;
</del>
      <span class="diff">"@id": "http://xmlns.com/foaf/0.1/age"</span>,
<ins class="diff-chg">      "@type": "xsd:integer"
    },
    "<span class="diff">http://xmlns.com/foaf/0.1/homepage</span>":
    {
      "@type": "@id"
</ins>
    }
  },
<del class="diff-old">...
  &quot;title&quot;:
  {
    &quot;@value&quot;: &quot;JSON-LD Syntax&quot;,
    &quot;@language&quot;: &quot;en&quot;
  }
...
</del>
<ins class="diff-chg">  "foaf:name": "John Smith",
  "<span class="diff">foaf:age</span>": "41",
  "<span class="diff">http://xmlns.com/foaf/0.1/homepage</span>":
  [
    "http://personal.example.org/",
    "http://work.example.com/jsmith/"
  ]
</ins>
}
</pre>
</div>
<p>
<del class="diff-old">Both
examples
above
would
generate
</del>
<ins class="diff-chg">In
this
case
</ins>
the
<del class="diff-old">value
</del>
<code>
<del class="diff-old">JSON-LD
Syntax
</del>
<ins class="diff-chg">@id
</ins>
</code>
<del class="diff-old">tagged
with
</del>
<ins class="diff-chg">definition
in
</ins>
the
<del class="diff-old">language
en
;
which
</del>
<ins class="diff-chg">term
definition
</ins>
is
<ins class="diff-new">optional,
but
if
it
does
exist,
</ins>
the
<del class="diff-old">[
</del>
<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
<ins class="diff-chg">compact
</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
IRI
</ins></abbr>
<del class="diff-old">BCP47
</del>
</a>
<ins class="diff-new">or
</ins><a class="tref internalDFN" title="iri" href="#dfn-iri">
<del class="diff-old">]
code
</del>
<abbr title="Internationalized Resource Identifier">
<ins class="diff-chg">IRI
</ins></abbr></a><ins class="diff-chg">
is
treated
as
a
</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
term
</ins></a><ins class="diff-chg">
(not
a
</ins><code><ins class="diff-chg">
prefix:suffix
</ins></code><ins class="diff-chg">
construct)
so
that
the
actual
definition
of
a
</ins><a class="tref internalDFN" title="prefix" href="#dfn-prefix"><ins class="diff-chg">
prefix
</ins></a><ins class="diff-chg">
becomes
unnecessary.
Type
coercion
is
performed
using
the
unexpanded
value
of
the
key
if
there
is
an
exact
match
</ins>
for
the
<del class="diff-old">English
language.
</del>
<ins class="diff-chg">key
in
the
</ins><a class="tref internalDFN" title="active_context" href="#dfn-active_context"><ins class="diff-chg">
active
context
</ins></a>.
</p>
<del class="diff-old">Systems
that
support
</del>
<div class="note">
<div class="note-title">
<span>
<ins class="diff-chg">Note
</ins></span></div><p class=""><ins class="diff-chg">
Keys
in
the
context
are
treated
as
</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
terms
</ins></a><ins class="diff-chg">
for
the
purpose
of
expansion
and
value
coercion.
At
times,
this
may
result
in
</ins>
multiple
<del class="diff-old">languages
often
need
</del>
<ins class="diff-chg">representations
for
the
same
expanded
</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
IRI
</ins></abbr>.<ins class="diff-chg">
For
example,
one
could
specify
that
</ins><code><ins class="diff-chg">
dog
</ins></code><ins class="diff-chg">
and
</ins><code><ins class="diff-chg">
cat
</ins></code><ins class="diff-chg">
both
expanded
</ins>
to
<del class="diff-old">express
data
values
in
each
language.
Typically,
such
systems
</del>
<code>
<ins class="diff-chg">http://example.com/vocab#animal
</ins></code>.<ins class="diff-chg">
Doing
this
could
be
useful
for
establishing
different
type
coercion
or
language
specification
rules.
It
</ins>
also
<del class="diff-old">try
</del>
<ins class="diff-chg">allows
a
</ins><a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri"><ins class="diff-chg">
compact
</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
IRI
</ins></abbr></a><ins class="diff-chg">
(or
even
an
absolute
</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
IRI
</ins></abbr></a><ins class="diff-chg">
)
</ins>
to
<del class="diff-old">ensure
</del>
<ins class="diff-chg">be
defined
as
something
else
entirely.
For
example,
one
could
specify
</ins>
that
<del class="diff-old">developers
have
</del>
<ins class="diff-chg">the
</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
term
</ins></a><code><ins class="diff-chg">
http://example.org/zoo
</ins></code><ins class="diff-chg">
should
expand
to
</ins><code><ins class="diff-chg">
http://example.org/river
</ins></code>,<ins class="diff-chg">
but
this
usage
is
discouraged
because
it
would
lead
to
</ins>
a
<del class="diff-old">programatically
easy
way
</del>
<ins class="diff-chg">great
deal
of
confusion
among
developers
attempting
</ins>
to
<del class="diff-old">navigate
</del>
<ins class="diff-chg">understand
</ins>
the
<del class="diff-old">datastructures
for
</del>
<ins class="diff-chg">JSON-LD
document.
</ins></p></div></section><section id="advanced-context-usage"><h3><span class="secno"><ins class="diff-chg">
6.4
</ins></span><ins class="diff-chg">
Advanced
Context
Usage
</ins></h3><p><ins class="diff-chg">
Section
</ins><a href="#the-context" class="sec-ref"><span class="secno"><ins class="diff-chg">
5.1
</ins></span><span class="sec-title"><ins class="diff-chg">
The
Context
</ins></span></a><ins class="diff-chg">
introduced
</ins>
the
<del class="diff-old">language-specific
data.
In
this
case,
language
maps
</del>
<ins class="diff-chg">basics
of
what
makes
JSON-LD
work.
This
section
expands
on
the
basic
principles
of
the
</ins><a class="tref internalDFN" title="context" href="#dfn-context"><ins class="diff-chg">
context
</ins>
</a>
<ins class="diff-new">and
demonstrates
how
more
advanced
use
cases
can
be
achieved
using
JSON-LD.
</ins></p><p><ins class="diff-new">
In
general,
contexts
</ins>
may
be
<del class="diff-old">utilized.
</del>
<ins class="diff-chg">used
at
any
time
a
</ins><a class="tref internalDFN" title="json_object" href="#dfn-json_object"><ins class="diff-chg">
JSON
object
</ins></a><ins class="diff-chg">
is
defined.
The
only
time
that
one
cannot
express
a
context
is
inside
a
context
definition
itself.
For
example,
a
</ins><a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document"><ins class="diff-chg">
JSON-LD
document
</ins></a><ins class="diff-chg">
may
use
more
than
one
context
at
different
points
in
a
document:
</ins>
</p>
<del class="diff-old">{
  &quot;@context&quot;:
</del>
    <div class="example"><div class="example-title"><span>Example 23</span>: Using multiple contexts</div><pre class="example">[
  {
<del class="diff-old">    &quot;title&quot;:
    {
      &quot;@id&quot;: &quot;http://purl.org/dc/terms/title&quot;,
      
    }
</del>
    <span class="diff">"@context": "http://example.org/contexts/person.jsonld",</span>
<ins class="diff-chg">    "name": "Manu Sporny",
    "homepage": "http://manu.sporny.org/",
    "depiction": "http://twitter.com/account/profile_image/manusporny"
</ins>
  },
<del class="diff-old">...
  &quot;title&quot;:
  {
    &quot;en&quot;: &quot;JSON-LD Syntax&quot;,
    &quot;ru&quot;: &quot;JSON-LD Синтаксис&quot;,
    &quot;ja&quot;: &quot;JSON-LDの構文&quot;
  }
...
</del>
<ins class="diff-chg">  {
</ins>    <span class="diff">"@context": "http://example.org/contexts/place.jsonld",</span><ins class="diff-chg">
    "name": "The Empire State Building",
    "description": "The Empire State Building is a 102-story landmark in New York City.",
    "geo": {
      "latitude": "40.75",
      "longitude": "73.98"
    }
  }
]
</ins></pre></div><p><ins class="diff-chg">
Duplicate
context
</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
terms
</ins></a><ins class="diff-chg">
are
overridden
using
a
last-defined-wins
mechanism.
</ins></p>    <div class="example"><div class="example-title"><span>Example 24</span>: Scoped contexts within node objects</div><pre class="example">{  <span class="diff">"@context":<ins class="diff-chg">
  {
    "name": "http://example.com/person#name",
    "details": "http://example.com/person#details"
  },</span>
  "<span class="diff">name</span>": "Markus Lanthaler",
  ...
  "details":
  {
</ins>    <span class="diff">"@context": {<ins class="diff-chg">
      "name": "http://example.com/organization#name"
    },</span>
    "<span class="diff">name</span>": "Graz University of Technology"
  }
</ins>
}
</pre>
</div>
<p>
In
the
example
above,
the
<del class="diff-old">title
</del>
<code>
<ins class="diff-chg">name
</ins></code><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
term
</ins></a>
is
<del class="diff-old">expressed
</del>
<ins class="diff-chg">overridden
</ins>
in
<del class="diff-old">three
languages;
English,
Russian,
</del>
<ins class="diff-chg">the
more
deeply
nested
</ins><code><ins class="diff-chg">
details
</ins></code><ins class="diff-chg">
structure.
Note
that
this
is
rarely
a
good
authoring
practice
</ins>
and
<del class="diff-old">Japanese.
To
access
</del>
<ins class="diff-chg">is
typically
used
when
working
with
legacy
applications
that
depend
on
a
specific
structure
of
</ins>
the
<del class="diff-old">data
above
</del>
<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
<ins class="diff-chg">JSON
object
</ins></a>.<ins class="diff-chg">
If
a
</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
term
</ins></a><ins class="diff-chg">
is
redefined
within
a
context,
all
previous
rules
associated
with
the
previous
definition
are
removed.
If
a
</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
term
</ins></a><ins class="diff-chg">
is
redefined
to
</ins><code><ins class="diff-chg">
null
</ins></code>,<ins class="diff-chg">
the
</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
term
</ins></a><ins class="diff-chg">
is
effectively
removed
from
the
list
of
</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
terms
</ins></a><ins class="diff-chg">
defined
in
the
</ins><a class="tref internalDFN" title="active_context" href="#dfn-active_context"><ins class="diff-chg">
active
context
</ins></a>.</p><p><ins class="diff-chg">
Multiple
contexts
may
be
combined
using
an
</ins><a class="tref internalDFN" title="array" href="#dfn-array"><ins class="diff-chg">
array
</ins></a>,<ins class="diff-chg">
which
is
processed
</ins>
in
<ins class="diff-new">order.
The
set
of
contexts
defined
within
</ins>
a
<del class="diff-old">programming
language
supporting
dot-notation
accessors
for
</del>
<ins class="diff-chg">specific
</ins><a class="tref internalDFN" title="json_object" href="#dfn-json_object"><ins class="diff-chg">
JSON
</ins>
object
<del class="diff-old">properties,
</del>
</a>
<ins class="diff-chg">are
referred
to
as
</ins><dfn title="local_context" id="dfn-local_context"><ins class="diff-chg">
local
contexts
</ins></dfn>.<ins class="diff-chg">
The
</ins><dfn title="active_context" id="dfn-active_context"><ins class="diff-chg">
active
context
</ins></dfn><ins class="diff-chg">
refers
to
the
accumulation
of
</ins><a class="tref internalDFN" title="local_context" href="#dfn-local_context"><ins class="diff-chg">
local
contexts
</ins></a><ins class="diff-chg">
that
are
in
scope
at
</ins>
a
<del class="diff-old">developer
may
use
</del>
<ins class="diff-chg">specific
point
within
</ins>
the
<ins class="diff-new">document.
Setting
a
</ins><a class="tref internalDFN" title="local_context" href="#dfn-local_context"><ins class="diff-new">
local
context
</ins></a><ins class="diff-new">
to
</ins>
<code>
<del class="diff-old">property.language
</del>
<ins class="diff-chg">null
</ins>
</code>
<del class="diff-old">pattern.
For
example,
</del>
<ins class="diff-chg">effectively
resets
the
</ins><a class="tref internalDFN" title="active_context" href="#dfn-active_context"><ins class="diff-chg">
active
context
</ins></a>
to
<del class="diff-old">access
</del>
<ins class="diff-chg">an
empty
context.
The
following
example
specifies
an
external
context
and
then
layers
an
embedded
context
on
top
of
</ins>
the
<del class="diff-old">Japanese
version
</del>
<ins class="diff-chg">external
context:
</ins></p>    <div class="example"><div class="example-title"><span>Example 25</span>: Combining external and local contexts</div><pre class="example">{  <span class="diff">"@context": [<ins class="diff-chg">
    "http://json-ld.org/contexts/person.jsonld",
    {
      "pic": "http://xmlns.com/foaf/0.1/depiction"
    }
  ],</span>
  "name": "Manu Sporny",
  "homepage": "http://manu.sporny.org/",
</ins>  <span class="diff">"pic": "http://twitter.com/account/profile_image/manusporny"</span><ins class="diff-chg">
}
</ins></pre></div><div class="note"><div class="note-title"><span><ins class="diff-chg">
Note
</ins></span></div><p class=""><ins class="diff-chg">
It
is
a
best
practice
to
put
the
</ins><a class="tref internalDFN" title="context" href="#dfn-context"><ins class="diff-chg">
context
</ins></a><ins class="diff-chg">
definition
at
the
top
</ins>
of
the
<del class="diff-old">title,
</del>
<ins class="diff-chg">JSON-LD
document.
</ins></p></div><div class="note"><div class="note-title"><span><ins class="diff-chg">
Note
</ins></span></div><p class=""><ins class="diff-chg">
While
it
is
possible
to
define
</ins>
a
<del class="diff-old">developer
would
use
</del>
<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
<ins class="diff-chg">compact
</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
IRI
</ins></abbr></a>,<ins class="diff-chg">
or
an
</ins><a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri"><ins class="diff-chg">
absolute
</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
IRI
</ins></abbr></a><ins class="diff-chg">
to
expand
to
some
other
unrelated
</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
IRI
</ins></abbr></a><ins class="diff-chg">
(for
example,
</ins><code><ins class="diff-chg">
foaf:name
</ins></code><ins class="diff-chg">
expanding
to
</ins><code><ins class="diff-chg">
http://example.org/unrelated#species
</ins></code><ins class="diff-chg">
),
such
usage
is
strongly
discouraged.
</ins></p></div><div class="note"><div class="note-title"><span><ins class="diff-chg">
Note
</ins></span></div><p class=""><ins class="diff-chg">
To
avoid
forward-compatibility
issues,
</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
terms
</ins></a><ins class="diff-chg">
starting
with
an&nbsp;
</ins><code><ins class="diff-chg">
@
</ins></code><ins class="diff-chg">
character
are
to
be
avoided
as
they
might
be
used
as
</ins><a class="tref internalDFN" title="keyword" href="#dfn-keyword"><ins class="diff-chg">
keywords
</ins></a><ins class="diff-chg">
in
future
versions
of
JSON-LD.
Furthermore,
</ins>
the
<del class="diff-old">following
code
snippet:
</del>
<ins class="diff-chg">use
of
empty
</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
terms
</ins></a><ins class="diff-chg">
(
</ins>
<code>
<del class="diff-old">obj.title.ja
.
</del>
<ins class="diff-chg">""
</ins></code><ins class="diff-chg">
)
is
discouraged
as
not
all
programming
languages
are
able
to
handle
empty
property
names.
</ins>
</p>
</div>
<section id="interpreting-json-as-json-ld">
<h4>
<span class="secno">
<del class="diff-old">6.4
</del>
<ins class="diff-chg">6.4.1
</ins>
</span>
<del class="diff-old">Referencing
Contexts
from
</del>
<ins class="diff-chg">Interpreting
</ins>
JSON
<del class="diff-old">Documents
</del>
<ins class="diff-chg">as
JSON-LD
</ins></h4>
<p>
Ordinary
JSON
documents
can
be
<del class="diff-old">transformed
into
</del>
<ins class="diff-chg">interpreted
as
</ins>
JSON-LD
<del class="diff-old">documents
</del>
by
referencing
<del class="diff-old">to
an
external
</del>
<ins class="diff-chg">a
</ins>
JSON-LD
<a class="tref internalDFN" title="context" href="#dfn-context">
context
</a>
<ins class="diff-new">document
</ins>
in
an
HTTP
Link
Header.
Doing
<del class="diff-old">this
</del>
<ins class="diff-chg">so
</ins>
allows
JSON
to
be
unambiguously
machine-readable
without
requiring
developers
to
drastically
change
their
<del class="diff-old">workflow
</del>
<ins class="diff-chg">markup
</ins>
and
provides
an
upgrade
path
for
existing
infrastructure
without
breaking
existing
clients
that
rely
on
the
<code>
application/json
</code>
media
type.
</p>
<p>
In
order
to
use
an
external
context
with
an
ordinary
JSON
document,
an
author
<em class="rfc2119" title="must">
must
</em>
specify
an
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
to
a
valid
<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
JSON-LD
document
</a>
in
an
HTTP
Link
Header
[
<cite>
<a class="bibref" href="#bib-RFC5988">
RFC5988
</a>
</cite>
]
using
the
<code>
http://www.w3.org/ns/json-ld#context
</code>
link
relation.
The
referenced
document
<em class="rfc2119" title="must">
must
</em>
have
a
top-level
<del class="diff-old">node
</del>
<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
<ins class="diff-chg">JSON
</ins>
object
</a>.
The
<code>
@context
</code>
subtree
within
that
object
is
added
to
the
top-level
<del class="diff-old">node
</del>
<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
<ins class="diff-chg">JSON
</ins>
object
</a>
of
the
referencing
document.
If
an
<a class="tref internalDFN" title="array" href="#dfn-array">
array
</a>
is
at
the
top-level
of
the
referencing
document
and
its
items
are
<del class="diff-old">node
</del>
<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
<ins class="diff-chg">JSON
</ins>
objects
</a>,
the
<code>
@context
</code>
subtree
is
added
to
all
<a class="tref internalDFN" title="array" href="#dfn-array">
array
</a>
items.
All
extra
information
located
outside
of
the
<code>
@context
</code>
subtree
in
the
referenced
document
<em class="rfc2119" title="must">
must
</em>
be
discarded.
<ins class="diff-new">Effectively
this
means
that
the
</ins><a class="tref internalDFN" title="active_context" href="#dfn-active_context"><ins class="diff-new">
active
context
</ins></a><ins class="diff-new">
is
initialized
with
the
referenced
external
</ins><a class="tref internalDFN" title="context" href="#dfn-context"><ins class="diff-new">
context
</ins></a>.
</p>
<p>
The
following
example
demonstrates
the
use
of
an
external
context
with
an
ordinary
JSON
document:
</p>
<del class="diff-old">GET /ordinary-json-document.json HTTP/1.1
</del>
      <div class="example"><div class="example-title"><span>Example 26</span>: Referencing a JSON-LD context from a JSON document via an HTTP Link Header</div><pre class="example">GET /ordinary-json-document.json HTTP/1.1
Host: example.com
Accept: application/ld+json,application/json,*/*;q=0.1
====================================
HTTP/1.0 200 OK
...
Content-Type: <span class="diff">application/json</span>
<span class="diff">Link: &lt;http://json-ld.org/contexts/person.jsonld&gt;; rel="http://www.w3.org/ns/json-ld#context"; type="application/ld+json"</span>
{
<del class="diff-old">  &quot;name&quot;: &quot;Markus Lanthaler&quot;,
  &quot;homepage&quot;: &quot;http://www.markus-lanthaler.com/&quot;,
  &quot;depiction&quot;: &quot;http://twitter.com/account/profile_image/markuslanthaler&quot;
</del>
<ins class="diff-chg">  "name": "Markus Lanthaler",
  "homepage": "http://www.markus-lanthaler.com/",
  "image": "http://twitter.com/account/profile_image/markuslanthaler"
</ins>
}
</pre>
</div>
<p>
Please
note
that
<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
JSON-LD
documents
</a>
served
with
the
<code>
application/ld+json
</code>
media
type
<em class="rfc2119" title="must">
must
</em>
have
all
context
information,
including
references
to
external
contexts,
within
the
body
of
the
document.
Contexts
linked
via
a
<code>
http://www.w3.org/ns/json-ld#context
</code>
HTTP
Link
Header
<em class="rfc2119" title="must">
must
</em>
be
ignored
for
such
documents.
</p>
</section>
</section>
<section id="string-internationalization">
<h3>
<span class="secno">
6.5
</span>
<del class="diff-old">Expanded
Term
Definition
</del>
<ins class="diff-chg">String
Internationalization
</ins>
</h3>
<p>
<del class="diff-old">Within
</del>
<ins class="diff-chg">At
times,
it
is
important
to
annotate
</ins>
a
<del class="diff-old">context
definition,
terms
may
be
defined
using
an
expanded
term
definition
</del>
<a class="tref internalDFN" title="string" href="#dfn-string">
<ins class="diff-chg">string
</ins>
</a>
<ins class="diff-new">with
its
language.
In
JSON-LD
this
is
possible
in
a
variety
of
ways.
First,
it
is
possible
</ins>
to
<del class="diff-old">allow
</del>
<ins class="diff-chg">define
a
default
language
</ins>
for
<del class="diff-old">additional
information
associated
with
</del>
<ins class="diff-chg">a
JSON-LD
document
by
setting
</ins>
the
<del class="diff-old">term
to
be
specified
(see
also
6.6
Type
Coercion
</del>
<code>
<ins class="diff-chg">@language
</ins></code><ins class="diff-chg">
key
in
the
</ins><a class="tref internalDFN" title="context" href="#dfn-context"><ins class="diff-chg">
context
</ins></a>:</p>  <div class="example"><div class="example-title"><span>Example 27</span>: Setting the default language of a JSON-LD document</div><pre class="example">{  <span class="diff">"@context":<ins class="diff-chg">
  {
    ...
    "@language": "ja"
  }</span>,
  "name": <span class="diff">"花澄"</span>,
  "occupation": <span class="diff">"科学者"</span>
}
</ins></pre>
</div>
<p>
<ins class="diff-new">The
example
above
would
associate
the
</ins><code><ins class="diff-new">
ja
</ins></code><ins class="diff-new">
language
code
with
the
two
</ins><a class="tref internalDFN" title="string" href="#dfn-string"><ins class="diff-new">
strings
</ins>
</a>
<em>
<ins class="diff-new">花澄
</ins></em>
and
<del class="diff-old">6.9
Sets
and
Lists
</del>
<em>
<ins class="diff-chg">科学者
</ins></em>.<ins class="diff-chg">
Languages
codes
are
defined
in
[
</ins><cite>
<a class="bibref" href="#bib-BCP47">
<ins class="diff-new">BCP47
</ins>
</a>
<del class="diff-old">).
</del>
</cite>
<ins class="diff-chg">].
</ins>
</p>
<p>
<del class="diff-old">Instead
of
using
a
string
representation
of
an
IRI
,
</del>
<ins class="diff-chg">To
clear
</ins>
the
<del class="diff-old">IRI
may
be
specified
using
</del>
<ins class="diff-chg">default
language
for
</ins>
a
<del class="diff-old">JSON
object
having
an
</del>
<ins class="diff-chg">subtree,
</ins>
<code>
<del class="diff-old">@id
</del>
<ins class="diff-chg">@language
</ins>
</code>
<del class="diff-old">key,
and
a
term
,
</del>
<ins class="diff-chg">can
be
set
to
</ins><code><ins class="diff-chg">
null
</ins></code><ins class="diff-chg">
in
</ins>
a
<del class="diff-old">compact
IRI
,
or
an
absolute
IRI
</del>
<a class="tref internalDFN" title="local_context" href="#dfn-local_context">
<ins class="diff-chg">local
context
</ins>
</a>
as
<del class="diff-old">value.
</del>
<ins class="diff-chg">follows:
</ins>
</p>
<del class="diff-old">{
  &quot;@context&quot;:
  {
    &quot;foaf&quot;: ,
    &quot;name&quot;: ,
    &quot;homepage&quot;: ,
    &quot;depiction&quot;: 
</del>
  <div class="example"><div class="example-title"><span>Example 28</span>: Clearing default language</div><pre class="example">{
<ins class="diff-chg">  "@context": {
    ...
    "@language": "ja"
</ins>
  },
<del class="diff-old">  &quot;name&quot;: &quot;Manu Sporny&quot;,
  &quot;homepage&quot;: &quot;http://manu.sporny.org/&quot;,
  &quot;depiction&quot;: &quot;http://twitter.com/account/profile_image/manusporny&quot;
</del>
<ins class="diff-chg">  "name": "花澄",
  "details": {
</ins><span class="diff">    "@context": {<ins class="diff-chg">
      "@language": null
    }</span>,
    "occupation": "Ninja"
  }
</ins>
}
</pre>
</div>
<p>
<del class="diff-old">This
allows
additional
information
to
be
associated
with
the
term.
This
may
be
used
for
6.6
Type
Coercion
,
6.9
Sets
and
Lists
,
or
</del>
<ins class="diff-chg">Second,
it
is
possible
</ins>
to
associate
<ins class="diff-new">a
</ins>
language
<del class="diff-old">information
</del>
with
a
<ins class="diff-new">specific
</ins>
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
<del class="diff-old">as
shown
in
the
following
example:
</del>
<ins class="diff-chg">using
an
</ins><a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition"><ins class="diff-chg">
expanded
term
definition
</ins></a>:
</p>
<del class="diff-old">{
  &quot;@context&quot;: {
</del>
  <div class="example"><div class="example-title"><span>Example 29</span>: Expanded term definition with language</div><pre class="example">{
<ins class="diff-chg">  "@context": {
</ins>
    ...
<del class="diff-old">    &quot;ex&quot;: &quot;http://example.com/&quot;,
    &quot;@language&quot;: &quot;ja&quot;,
    &quot;name&quot;: { &quot;@id&quot;: &quot;ex:name&quot;,  },
    &quot;occupation&quot;: { &quot;@id&quot;: &quot;ex:occupation&quot; },
    &quot;occupation_en&quot;: { &quot;@id&quot;: &quot;ex:occupation&quot;,  },
    &quot;occupation_cs&quot;: { &quot;@id&quot;: &quot;ex:occupation&quot;,  }
</del>
<ins class="diff-chg">    "ex": "http://example.com/vocab/",
    "@language": "ja",
    "name": { "@id": "ex:name", <span class="diff">"@language": null</span> },
    "occupation": { "@id": "ex:occupation" },
    "occupation_en": { "@id": "ex:occupation", <span class="diff">"@language": "en"</span> },
    "occupation_cs": { "@id": "ex:occupation", <span class="diff">"@language": "cs"</span> }
</ins>
  },
<del class="diff-old">  &quot;name&quot;: &quot;Yagyū Muneyoshi&quot;,
  &quot;occupation&quot;: &quot;忍者&quot;,
  &quot;occupation_en&quot;: &quot;Ninja&quot;,
  &quot;occupation_cs&quot;: &quot;Nindža&quot;,
</del>
  <span class="diff">"name": "Yagyū Muneyoshi",
<ins class="diff-chg">  "occupation": "忍者",
  "occupation_en": "Ninja",
  "occupation_cs": "Nindža",</span>
</ins>
  ...
}
</pre>
</div>
<p>
The
example
above
would
associate
<em>
忍者
</em>
with
the
specified
default
language
code
<code>
ja
</code>,
<em>
Ninja
</em>
with
the
language
code
<code>
en
</code>,
and
<em>
Nindža
</em>
with
the
language
code
<code>
cs
</code>.
The
value
of
<code>
name
</code>,
<em>
Yagyū
Muneyoshi
</em>
wouldn't
be
associated
with
any
language
code
since
<code>
@language
</code>
was
reset
to
<a class="tref internalDFN" title="null" href="#dfn-null">
null
</a>
in
the
<a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">
expanded
term
definition
</a>.
</p>
<del class="diff-old">Expanded
terms
may
also
be
defined
using
compact
IRIs
or
absolute
IRIs
as
keys.
If
the
definition
does
not
include
an
@id
key,
the
expanded
IRI
is
determined
by
performing
expansion
of
the
key
within
the
current
active
context
.
This
mechanism
is
mainly
used
to
associate
type
or
language
information
with
a
compact
IRI
or
an
absolute
IRI
.
</del>
<div class="note">
<div class="note-title">
<span>
Note
</span>
</div>
<p class="">
<del class="diff-old">While
it
is
possible
to
define
a
compact
IRI
,
or
an
absolute
IRI
to
expand
to
some
other
unrelated
IRI
(for
example,
foaf:name
expanding
</del>
<ins class="diff-chg">Language
associations
can
only
be
applied
</ins>
to
<del class="diff-old">http://example.org/unrelated#species
),
such
usage
is
strongly
discouraged.
6.6
Type
Coercion
JSON-LD
supports
the
coercion
of
</del>
<ins class="diff-chg">plain
literal
</ins><a class="tref internalDFN" title="string" href="#dfn-string"><ins class="diff-chg">
strings
</ins></a>.<a class="tref internalDFN" title="typed_value" href="#dfn-typed_value"><ins class="diff-chg">
Typed
</ins>
values
<del class="diff-old">to
particular
data
types.
Type
coercion
allows
someone
deploying
JSON-LD
to
coerce
the
incoming
</del>
</a>
or
<del class="diff-old">outgoing
</del>
values
<ins class="diff-new">that
are
subject
</ins>
to
<del class="diff-old">the
proper
data
type
based
on
a
mapping
of
data
type
IRIs
to
terms
.
Using
type
coercion,
value
representation
is
preserved
without
requiring
the
data
type
to
be
specified
with
each
piece
of
data.
Type
coercion
is
specified
within
an
</del>
<a href="#type-coercion" class="sec-ref">
<span class="secno">
<del class="diff-old">6.5
</del>
<ins class="diff-chg">6.3
</ins>
</span>
<span class="sec-title">
<del class="diff-old">Expanded
Term
Definition
</del>
<ins class="diff-chg">Type
Coercion
</ins>
</span>
</a>
<del class="diff-old">using
the
@type
key.
The
value
of
this
key
expands
to
an
IRI
.
Alternatively,
the
keyword
@id
may
</del>
<ins class="diff-chg">cannot
</ins>
be
<del class="diff-old">used
</del>
<ins class="diff-chg">language
tagged.
</ins></p></div><p><ins class="diff-chg">
Just
</ins>
as
<del class="diff-old">value
</del>
<ins class="diff-chg">in
the
example
above,
systems
often
need
</ins>
to
<del class="diff-old">indicate
that
within
</del>
<ins class="diff-chg">express
</ins>
the
<del class="diff-old">body
of
a
JSON-LD
document,
a
string
</del>
value
of
a
<del class="diff-old">term
coerced
</del>
<ins class="diff-chg">property
in
multiple
languages.
Typically,
such
systems
also
try
</ins>
to
<del class="diff-old">@id
is
</del>
<ins class="diff-chg">ensure
that
developers
have
a
programmatically
easy
way
</ins>
to
<ins class="diff-new">navigate
the
data
structures
for
the
language-specific
data.
In
this
case,
</ins><a class="tref internalDFN" title="language_map" href="#dfn-language_map"><ins class="diff-new">
language
maps
</ins></a><ins class="diff-new">
may
</ins>
be
<del class="diff-old">interpreted
as
an
IRI
.
</del>
<ins class="diff-chg">utilized.
</ins>
</p>
  <div class="example"><div class="example-title"><span>Example 30</span>: Language map expressing a property in three languages</div><pre class="example">{
<ins class="diff-chg">  "@context":
  {
    ...
    "occupation": { "@id": "ex:occupation", <span class="diff">"@container": "@language"</span> }
  },
  "name": "Yagyū Muneyoshi",
  "occupation":
</ins>  <span class="diff">{<ins class="diff-chg">
    "ja": "忍者",
    "en": "Ninja",
    "cs": "Nindža"
  }</span>
  ...
}
</ins></pre>
<del class="diff-old">Terms
or
compact
IRIs
used
</del>
</div>
<p>
<ins class="diff-chg">The
example
above
expresses
exactly
the
same
information
</ins>
as
the
<ins class="diff-new">previous
example
but
consolidates
all
values
in
a
single
property.
To
access
the
</ins>
value
<del class="diff-old">of
</del>
<ins class="diff-chg">in
</ins>
a
<del class="diff-old">@type
key
</del>
<ins class="diff-chg">specific
language
in
a
programming
language
supporting
dot-notation
accessors
for
object
properties,
a
developer
</ins>
may
<del class="diff-old">be
defined
within
</del>
<ins class="diff-chg">use
</ins>
the
<del class="diff-old">same
context.
This
means
that
one
may
specify
a
term
like
</del>
<code>
<del class="diff-old">xsd
</del>
<ins class="diff-chg">property.language
</ins>
</code>
<del class="diff-old">and
then
</del>
<ins class="diff-chg">pattern.
For
example,
to
access
the
occupation
in
English,
a
developer
would
</ins>
use
<del class="diff-old">xsd:integer
within
</del>
the
<del class="diff-old">same
context
definition.
</del>
<ins class="diff-chg">following
code
snippet:
</ins><code><ins class="diff-chg">
obj.occupation.en
</ins></code>.
</p>
<p>
<del class="diff-old">The
example
below
demonstrates
how
a
JSON-LD
author
can
coerce
values
</del>
<ins class="diff-chg">Third,
it
is
possible
</ins>
to
<del class="diff-old">typed
values
,
IRIs
and
lists.
</del>
<ins class="diff-chg">override
the
default
language
by
using
an
</ins><a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value"><ins class="diff-chg">
expanded
value
</ins></a>:
</p>
<del class="diff-old">{
  &quot;@context&quot;:
  {
    &quot;xsd&quot;: &quot;http://www.w3.org/2001/XMLSchema#&quot;,
    &quot;name&quot;: &quot;http://xmlns.com/foaf/0.1/name&quot;,
    &quot;age&quot;:
    {
      &quot;@id&quot;: &quot;http://xmlns.com/foaf/0.1/age&quot;,
      &quot;@type&quot;: &quot;xsd:integer&quot;
    },
    &quot;homepage&quot;:
    {
      &quot;@id&quot;: &quot;http://xmlns.com/foaf/0.1/homepage&quot;,
      &quot;@type&quot;: &quot;@id&quot;,
      &quot;@container&quot;: &quot;@list&quot;
    }
</del>
  <div class="example"><div class="example-title"><span>Example 31</span>: Overriding default language using an expanded value</div><pre class="example">{
<ins class="diff-chg">  "@context": {
    ...
    "@language": "ja"
</ins>
  },
<del class="diff-old">  &quot;@id&quot;: &quot;http://example.com/people#john&quot;,
  &quot;name&quot;: &quot;John Smith&quot;,
  &quot;age&quot;: ,
  &quot;homepage&quot;:
  [
    &quot;http://personal.example.org/&quot;,
    &quot;http://work.example.com/jsmith/&quot;
  ]
</del>
<ins class="diff-chg">  "name": "花澄",
  "occupation": <span class="diff">{
    "@value": "Scientist",
    "@language": "en"
  }</span>
</ins>
}
</pre>
</div>
<p>
<del class="diff-old">The
markup
shown
above
would
generate
the
following
data.
The
data
has
no
inherent
order
except
for
the
values
</del>
<ins class="diff-chg">This
makes
it
possible
to
specify
a
plain
string
by
omitting
</ins>
the
<code>
<del class="diff-old">http://xmlns.com/foaf/0.1/homepage
</del>
<ins class="diff-chg">@language
</ins>
</code>
<del class="diff-old">property
which
represent
an
ordered
list.
Subject
Property
Object
Datatype
http://example.com/people#john
http://xmlns.com/foaf/0.1/name
John
Smith
http://example.com/people#john
http://xmlns.com/foaf/0.1/age
41
http://www.w3.org/2001/XMLSchema#integer
http://example.com/people#john
http://xmlns.com/foaf/0.1/homepage
http://personal.example.org/
http://work.example.com/jsmith/
Terms
may
also
be
defined
using
absolute
IRIs
</del>
<ins class="diff-chg">tag
</ins>
or
<del class="diff-old">compact
IRIs
.
This
allows
coercion
rules
to
be
applied
</del>
<ins class="diff-chg">setting
it
</ins>
to
<del class="diff-old">keys
which
are
not
represented
as
a
simple
term
.
For
example:
</del>
<code>
<ins class="diff-chg">null
</ins></code><ins class="diff-chg">
when
expressing
it
using
an
</ins><a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value"><ins class="diff-chg">
expanded
value
</ins></a>:
</p>
<del class="diff-old">{
  &quot;@context&quot;:
  {
    &quot;foaf&quot;: &quot;http://xmlns.com/foaf/0.1/&quot;,
    &quot;&quot;:
    {
      ,
      &quot;@type&quot;: &quot;xsd:integer&quot;
    },
    &quot;&quot;:
    {
      &quot;@type&quot;: &quot;@id&quot;
    }
</del>
  <div class="example"><div class="example-title"><span>Example 32</span>: Removing language information using an expanded value</div><pre class="example">{
<ins class="diff-chg">  "@context": {
    ...
    "@language": "ja"
</ins>
  },
<del class="diff-old">  &quot;foaf:name&quot;: &quot;John Smith&quot;,
  &quot;&quot;: &quot;41&quot;,
  &quot;&quot;:
  [
    &quot;http://personal.example.org/&quot;,
    &quot;http://work.example.com/jsmith/&quot;
  ]
</del>
<ins class="diff-chg">  "name": <span class="diff">{
    "@value": "Frank"
  }</span>,
  "occupation": {
    "@value": "Ninja",
    "@language": "en"
  },
  "speciality": "手裏剣"
</ins>
}
</pre>
</div>
</section>
<section id="overriding-vocab">
<h3>
<span class="secno">
<ins class="diff-new">6.6
</ins></span><ins class="diff-new">
Overriding
@vocab
</ins></h3>
<p>
<del class="diff-old">In
this
case
the
</del>
<ins class="diff-chg">If
</ins>
<code>
<del class="diff-old">@id
</del>
<ins class="diff-chg">@vocab
</ins>
</code>
<del class="diff-old">definition
in
the
term
definition
</del>
is
<del class="diff-old">optional,
</del>
<ins class="diff-chg">used
</ins>
but
<del class="diff-old">if
it
does
exist,
the
compact
IRI
</del>
<ins class="diff-chg">certain
keys
in
an
</ins><a class="tref internalDFN" title="json_object" href="#dfn-json_object"><ins class="diff-chg">
object
</ins>
</a>
<del class="diff-old">or
</del>
<ins class="diff-chg">should
not
be
expanded
using
the
vocabulary
</ins>
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
<del class="diff-old">is
treated
as
</del>
</a>,
a
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
<del class="diff-old">(not
a
prefix:suffix
construct)
so
that
the
actual
definition
of
a
prefix
becomes
unnecessary.
Type
coercion
is
performed
using
the
unexpanded
value
of
the
key,
which
has
</del>
<ins class="diff-chg">can
be
explicitly
set
</ins>
to
<del class="diff-old">match
exactly
an
entry
</del>
<a class="tref internalDFN" title="null" href="#dfn-null">
<ins class="diff-chg">null
</ins></a>
in
the
<del class="diff-old">active
</del>
<a class="tref internalDFN" title="context" href="#dfn-context">
context
</a>.
<del class="diff-old">Note
Keys
</del>
<ins class="diff-chg">For
instance,
</ins>
in
the
<del class="diff-old">context
are
treated
as
terms
for
the
purpose
of
expansion
and
value
coercion.
At
times,
this
may
result
in
multiple
representations
for
</del>
<ins class="diff-chg">example
below
</ins>
the
<del class="diff-old">same
expanded
IRI
.
For
example,
one
could
specify
that
dog
and
</del>
<code>
<del class="diff-old">cat
</del>
<ins class="diff-chg">databaseId
</ins>
</code>
<del class="diff-old">both
expanded
to
http://example.com/vocab#animal
.
Doing
this
could
</del>
<ins class="diff-chg">member
would
</ins>
be
<del class="diff-old">useful
for
establishing
different
type
coercion
or
language
specification
rules.
It
also
allows
</del>
<ins class="diff-chg">ignored
by
</ins>
a
<del class="diff-old">compact
IRI
(or
even
an
absolute
</del>
<ins class="diff-chg">JSON-LD
processor.
</ins></p>
<del class="diff-old">IRI
</del>
<p>
<del class="diff-old">)
to
be
defined
as
something
else
entirely.
For
example,
one
could
specify
that
the
term
http://example.org/zoo
should
expand
to
http://example.org/river
,
but
this
usage
is
discouraged
because
it
would
lead
to
a
great
deal
of
confusion
among
developers
attempting
to
understand
the
JSON-LD
document.
</del>
</p>
  <div class="example"><div class="example-title"><span>Example 33</span>: Using the null keyword to ignore data</div><pre class="example">{
<ins class="diff-new">  "@context":
  {
     "@vocab": "http://schema.org/",
</ins>     <span class="diff">"databaseId": null</span><ins class="diff-new">
  },
  "name": "Gregg Kellogg",
</ins>  <span class="diff">"databaseId": "23987520"</span><ins class="diff-new">
}
</ins></pre>
</div>
</section>
<section id="property-generators">
<h3>
<span class="secno">
6.7
</span>
Property
Generators
</h3>
<p>
At
times,
an
author
may
find
that
they
need
to
express
the
same
value
for
multiple
properties.
The
simplest
approach
to
accomplish
this
goal
would
be
to
do
the
following:
</p>
<del class="diff-old">{
  &quot;@context&quot;:
</del>
<div class="example"><div class="example-title"><span>Example 34</span>: Verbose expression of multiple properties with the same value</div><pre class="example">{
<ins class="diff-chg">  "@context":
</ins>
  {
<del class="diff-old">    ,
    ,
    
</del>
    <span class="diff">"title1": "http://purl.org/dc/terms/title"</span>,
    <span class="diff">"title2": "http://schema.org/name"</span>,
    <span class="diff">"title3": "http://www.w3.org/2000/01/rdf-schema#label"</span>
  },
<del class="diff-old">  &quot;@id&quot;: &quot;http://example.com/book&quot;,
  ,
  ,
  
</del>
<ins class="diff-chg">  "@id": "http://example.com/book",
</ins>  <span class="diff">"title1": "The Count of Monte Cristo"</span>,  <span class="diff">"title2": "The Count of Monte Cristo"</span>,  <span class="diff">"title3": "The Count of Monte Cristo"</span>
}
</pre>
</div>
<p>
Unfortunately,
the
approach
above
produces
redundant
data
and
would
become
a
publishing
burden
for
large
data
sets.
In
these
situations,
the
author
may
use
a
<dfn title="property_generator" id="dfn-property_generator">
property
generator
</dfn>
to
express
a
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
that
maps
to
multiple
<a class="tref internalDFN" title="property" href="#dfn-property">
properties
</a>
in
the
<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
JSON-LD
graph
</a>.
This
method
can
be
accomplished
by
using
the
following
markup
pattern:
</p>
<del class="diff-old">{
  &quot;@context&quot;:
</del>
<div class="example"><div class="example-title"><span>Example 35</span>: Generating multiple properties using a single term</div><pre class="example">{
<ins class="diff-chg">  "@context":
</ins>
  {
<del class="diff-old">    &quot;title&quot;: { &quot;@id&quot;: [ &quot;http://purl.org/dc/terms/title&quot;,
                        &quot;http://schema.org/name&quot;,
                        &quot;http://www.w3.org/2000/01/rdf-schema#label&quot; ] }
</del>
    <span class="diff">"title": { "@id": [ "http://purl.org/dc/terms/title",
<ins class="diff-chg">                        "http://schema.org/name",
                        "http://www.w3.org/2000/01/rdf-schema#label" ] }</span>
</ins>
  },
<del class="diff-old">  &quot;@id&quot;: &quot;http://example.com/book&quot;,
  
</del>
<ins class="diff-chg">  "@id": "http://example.com/book",
</ins>  <span class="diff">"title": "The Count of Monte Cristo"</span>
}
</pre>
</div>
<p>
While
the
term
above
is
only
used
once
outside
of
the
<code>
@context
</code>,
the
document
above
<del class="diff-old">is
equivalent
to
the
following:
</del>
<ins class="diff-chg">will
be
interpreted
like
so:
</ins>
</p>
<table class="example">
<thead>
<tr>
<th>
Subject
</th>
<th>
Property
</th>
<th>
<del class="diff-old">Object
</del>
<ins class="diff-chg">Value
</ins>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
http://example.com/book
</td>
<td>
http://purl.org/dc/terms/title
</td>
<td>
The
Count
of
Monte
Cristo
</td>
</tr>
<tr>
<td>
http://example.com/book
</td>
<td>
http://schema.org/name
</td>
<td>
The
Count
of
Monte
Cristo
</td>
</tr>
<tr>
<td>
http://example.com/book
</td>
<td>
http://www.w3.org/2000/01/rdf-schema#label
</td>
<td>
The
Count
of
Monte
Cristo
</td>
</tr>
</tbody>
</table>
</section>
<section id="iri-expansion-within-a-context">
<h3>
<span class="secno">
6.8
</span>
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
Expansion
Within
a
Context
</h3>
<p>
In
general,
normal
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
expansion
rules
apply
anywhere
an
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
is
expected
(see
<a href="#iris" class="sec-ref">
<span class="secno">
<del class="diff-old">5.3
</del>
<ins class="diff-chg">5.2
</ins>
</span>
<span class="sec-title">
IRIs
</span>
</a>
).
Within
a
<a class="tref internalDFN" title="context" href="#dfn-context">
context
</a>
definition,
this
can
mean
that
terms
defined
within
the
context
may
also
be
used
within
that
context
as
long
as
there
are
no
circular
dependencies.
For
example,
it
is
common
to
use
the
<code>
xsd
</code>
namespace
when
defining
<a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">
typed
value
</a>
s:
</p>
<del class="diff-old">{
  &quot;@context&quot;:
</del>
<div class="example"><div class="example-title"><span>Example 36</span>: IRI expansion within a context</div><pre class="example">{
<ins class="diff-chg">  "@context":
</ins>
  {
<del class="diff-old">    ,
    &quot;name&quot;: &quot;http://xmlns.com/foaf/0.1/name&quot;,
    &quot;age&quot;:
</del>
    <span class="diff">"xsd": "http://www.w3.org/2001/XMLSchema#"</span>,
<ins class="diff-chg">    "name": "http://xmlns.com/foaf/0.1/name",
    "age":
</ins>
    {
<del class="diff-old">      &quot;@id&quot;: &quot;http://xmlns.com/foaf/0.1/age&quot;,
      &quot;@type&quot;: 
</del>
<ins class="diff-chg">      "@id": "http://xmlns.com/foaf/0.1/age",
      "@type": <span class="diff">"xsd:integer"</span>
</ins>
    },
<del class="diff-old">    &quot;homepage&quot;:
</del>
<ins class="diff-chg">    "homepage":
</ins>
    {
<del class="diff-old">      &quot;@id&quot;: &quot;http://xmlns.com/foaf/0.1/homepage&quot;,
      &quot;@type&quot;: &quot;@id&quot;
</del>
<ins class="diff-chg">      "@id": "http://xmlns.com/foaf/0.1/homepage",
      "@type": "@id"
</ins>
    }
  },
  ...
}
</pre>
</div>
<p>
In
this
example,
the
<code>
xsd
</code>
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
is
defined
and
used
as
a
<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
prefix
</a>
for
the
<code>
@type
</code>
coercion
of
the
<code>
age
</code>
property.
</p>
<p>
<a class="tref internalDFN" title="term" href="#dfn-term">
Terms
</a>
may
also
be
used
when
defining
the
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
of
another
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>:
</p>
<del class="diff-old">{
  &quot;@context&quot;:
</del>
<div class="example"><div class="example-title"><span>Example 37</span>: Using a term to define the IRI of another term within a context</div><pre class="example">{
<ins class="diff-chg">  "@context":
</ins>
  {
<del class="diff-old">    ,
    &quot;xsd&quot;: &quot;http://www.w3.org/2001/XMLSchema#&quot;,
    &quot;name&quot;: ,
    &quot;age&quot;:
</del>
    <span class="diff">"foaf": "http://xmlns.com/foaf/0.1/"</span>,
<ins class="diff-chg">    "xsd": "http://www.w3.org/2001/XMLSchema#",
    "name": <span class="diff">"foaf:name"</span>,
    "age":
</ins>
    {
<del class="diff-old">      &quot;@id&quot;: ,
      &quot;@type&quot;: &quot;xsd:integer&quot;
</del>
<ins class="diff-chg">      "@id": <span class="diff">"foaf:age"</span>,
      "@type": "xsd:integer"
</ins>
    },
<del class="diff-old">    &quot;homepage&quot;:
</del>
<ins class="diff-chg">    "homepage":
</ins>
    {
<del class="diff-old">      &quot;@id&quot;: ,
      &quot;@type&quot;: &quot;@id&quot;
</del>
<ins class="diff-chg">      "@id": <span class="diff">"foaf:homepage"</span>,
      "@type": "@id"
</ins>
    }
  },
  ...
}
</pre>
</div>
<p>
<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
Compact
IRIs
</a>
and
<a class="tref internalDFN" title="iri" href="#dfn-iri">
IRIs
</a>
may
be
used
on
the
left-hand
side
of
a
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
definition.
</p>
<del class="diff-old">{
  &quot;@context&quot;:
</del>
<div class="example"><div class="example-title"><span>Example 38</span>: Using a compact IRI as a term</div><pre class="example">{
<ins class="diff-chg">  "@context":
</ins>
  {
<del class="diff-old">    ,
    &quot;xsd&quot;: &quot;http://www.w3.org/2001/XMLSchema#&quot;,
    &quot;name&quot;: &quot;foaf:name&quot;,
    &quot;&quot;:
</del>
    <span class="diff">"foaf": "http://xmlns.com/foaf/0.1/"</span>,
<ins class="diff-chg">    "xsd": "http://www.w3.org/2001/XMLSchema#",
    "name": "foaf:name",
    "<span class="diff">foaf:age</span>":
</ins>
    {
<del class="diff-old">      &quot;@type&quot;: &quot;xsd:integer&quot;
</del>
<ins class="diff-chg">      "@type": "xsd:integer"
</ins>
    },
<del class="diff-old">    &quot;&quot;:
</del>
<ins class="diff-chg">    "<span class="diff">foaf:homepage</span>":
</ins>
    <span class="diff">{
<del class="diff-old">      &quot;@type&quot;: &quot;@id&quot;
</del>
<ins class="diff-chg">      "@type": "@id"
</ins>
    }</span>
  },
  ...
}
</pre>
</div>
<p>
In
this
example,
the
<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
compact
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
form
is
used
in
two
different
ways.
In
the
first
approach,
<code>
foaf:age
</code>
declares
both
the
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
for
the
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
(using
short-form)
as
well
as
the
<code>
@type
</code>
associated
with
the
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>.
In
the
second
approach,
only
the
<code>
@type
</code>
associated
with
the
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
is
specified.
The
full
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
for
<code>
foaf:homepage
</code>
is
determined
by
looking
up
the
<code>
foaf
</code>
<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
prefix
</a>
in
the
<a class="tref internalDFN" title="context" href="#dfn-context">
context
</a>.
</p>
<p>
<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
Absolute
IRIs
</a>
may
also
be
used
in
the
key
position
in
a
<a class="tref internalDFN" title="context" href="#dfn-context">
context
</a>:
</p>
<del class="diff-old">{
  &quot;@context&quot;:
</del>
<div class="example"><div class="example-title"><span>Example 39</span>: Associating context definitions with absolute IRIs</div><pre class="example">{
<ins class="diff-chg">  "@context":
</ins>
  {
<del class="diff-old">    &quot;foaf&quot;: &quot;http://xmlns.com/foaf/0.1/&quot;,
    &quot;xsd&quot;: &quot;http://www.w3.org/2001/XMLSchema#&quot;,
    &quot;name&quot;: &quot;foaf:name&quot;,
    &quot;foaf:age&quot;:
</del>
<ins class="diff-chg">    "foaf": "http://xmlns.com/foaf/0.1/",
    "xsd": "http://www.w3.org/2001/XMLSchema#",
    "name": "foaf:name",
    "foaf:age":
</ins>
    {
<del class="diff-old">      &quot;@id&quot;: &quot;foaf:age&quot;,
      &quot;@type&quot;: &quot;xsd:integer&quot;
</del>
<ins class="diff-chg">      "@id": "foaf:age",
      "@type": "xsd:integer"
</ins>
    },
<del class="diff-old">    &quot;&quot;:
</del>
<ins class="diff-chg">    "<span class="diff">http://xmlns.com/foaf/0.1/homepage</span>":
</ins>
    {
<del class="diff-old">      &quot;@type&quot;: &quot;@id&quot;
</del>
<ins class="diff-chg">      "@type": "@id"
</ins>
    }
  },
  ...
}
</pre>
</div>
<p>
In
order
for
the
<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
absolute
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
to
match
above,
the
<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
absolute
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
needs
to
be
used
in
the
<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
JSON-LD
document
</a>.
Also
note
that
<code>
foaf:homepage
</code>
will
not
use
the
<code>
{
<del class="diff-old">&quot;@type&quot;:
&quot;@id&quot;
</del>
<ins class="diff-chg">"@type":
"@id"
</ins>
}
</code>
declaration
because
<code>
foaf:homepage
</code>
is
not
the
same
as
<code>
http://xmlns.com/foaf/0.1/homepage
</code>.
That
is,
<a class="tref internalDFN" title="term" href="#dfn-term">
terms
</a>
are
looked
up
in
a
<a class="tref internalDFN" title="context" href="#dfn-context">
context
</a>
using
direct
string
comparison
before
the
<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
prefix
</a>
lookup
mechanism
is
applied.
</p>
<p>
The
only
exception
for
using
terms
in
the
<a class="tref internalDFN" title="context" href="#dfn-context">
context
</a>
is
that
circular
definitions
are
not
allowed.
That
is,
a
definition
of
<em>
<del class="diff-old">term-1
</del>
<ins class="diff-chg">term1
</ins>
</em>
cannot
depend
on
the
definition
of
<em>
<del class="diff-old">term-2
</del>
<ins class="diff-chg">term2
</ins>
</em>
if
<em>
<del class="diff-old">term-2
</del>
<ins class="diff-chg">term2
</ins>
</em>
also
depends
on
<em>
<del class="diff-old">term-1
</del>
<ins class="diff-chg">term1
</ins>
</em>.
For
example,
the
following
<a class="tref internalDFN" title="context" href="#dfn-context">
context
</a>
definition
is
illegal:
</p>
<del class="diff-old">{
  &quot;@context&quot;:
</del>
<div class="example"><div class="example-title"><span>Example 40</span>: Illegal circular definition of terms within a context</div><pre class="example">{
<ins class="diff-chg">  "@context":
</ins>
  {
<del class="diff-old">    &quot;term1&quot;: &quot;term2:foo&quot;,
    &quot;term2&quot;: &quot;term1:bar&quot;
</del>
    <span class="diff">"term1": "term2:foo",
<ins class="diff-chg">    "term2": "term1:bar"</span>
</ins>
  },
  ...
}
</pre>
</div>
</section>
<section id="sets-and-lists">
<h3>
<span class="secno">
6.9
</span>
Sets
and
Lists
</h3>
<p>
A
JSON-LD
author
can
express
multiple
values
in
a
compact
way
by
using
<a class="tref internalDFN" title="array" href="#dfn-array">
arrays
</a>.
Since
graphs
do
not
describe
ordering
for
links
between
nodes,
arrays
in
JSON-LD
do
not
provide
an
ordering
of
the
contained
elements
by
default.
This
is
exactly
the
opposite
from
regular
JSON
arrays,
which
are
ordered
by
default.
For
example,
consider
the
following
simple
document:
</p>
<del class="diff-old">{
</del>
<div class="example"><div class="example-title"><span>Example 41</span>: Multiple values with no inherent order</div><pre class="example">{
...
<del class="diff-old">  &quot;@id&quot;: &quot;http://example.org/people#joebob&quot;,
  &quot;nick&quot;: ,
</del>
<ins class="diff-chg">  "@id": "http://example.org/people#joebob",
  "nick": <span class="diff">[ "joe", "bob", "JB" ]</span>,
</ins>
...
}
</pre>
</div>
<p>
The
markup
shown
above
would
result
in
the
following
data
being
generated,
each
relating
the
node
to
an
individual
value,
with
no
inherent
order:
</p>
<table class="example">
<thead>
<tr>
<th>
Subject
</th>
<th>
Property
</th>
<th>
<del class="diff-old">Object
</del>
<ins class="diff-chg">Value
</ins>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
http://example.org/people#joebob
</td>
<td>
http://xmlns.com/foaf/0.1/nick
</td>
<td>
joe
</td>
</tr>
<tr>
<td>
http://example.org/people#joebob
</td>
<td>
http://xmlns.com/foaf/0.1/nick
</td>
<td>
bob
</td>
</tr>
<tr>
<td>
http://example.org/people#joebob
</td>
<td>
http://xmlns.com/foaf/0.1/nick
</td>
<td>
<del class="diff-old">jaybee
</del>
<ins class="diff-chg">JB
</ins>
</td>
</tr>
</tbody>
</table>
<p>
Multiple
values
may
also
be
expressed
using
the
expanded
form:
</p>
<del class="diff-old">{
  &quot;@id&quot;: &quot;http://example.org/articles/8&quot;,
  &quot;dc:title&quot;: 
</del>
<div class="example"><div class="example-title"><span>Example 42</span>: Using an expanded form to set multiple values</div><pre class="example">{
<ins class="diff-chg">  "@id": "http://example.org/articles/8",
  "dc:title": <span class="diff">
</ins>
  [
    {
<del class="diff-old">      &quot;@value&quot;: &quot;Das Kapital&quot;,
      &quot;@language&quot;: &quot;de&quot;
</del>
<ins class="diff-chg">      "@value": "Das Kapital",
      "@language": "de"
</ins>
    },
    {
<del class="diff-old">      &quot;@value&quot;: &quot;Capital&quot;,
      &quot;@language&quot;: &quot;en&quot;
</del>
<ins class="diff-chg">      "@value": "Capital",
      "@language": "en"
</ins>
    }
  ]</span>
}
</pre>
</div>
<p>
The
markup
shown
above
would
generate
the
following
data,
again
with
no
inherent
order:
</p>
<table class="example">
<thead>
<tr>
<th>
Subject
</th>
<th>
Property
</th>
<th>
<del class="diff-old">Object
</del>
<ins class="diff-chg">Value
</ins>
</th>
<th>
Language
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
http://example.org/articles/8
</td>
<td>
http://purl.org/dc/terms/title
</td>
<td>
Das
Kapital
</td>
<td>
de
</td>
</tr>
<tr>
<td>
http://example.org/articles/8
</td>
<td>
http://purl.org/dc/terms/title
</td>
<td>
Capital
</td>
<td>
en
</td>
</tr>
</tbody>
</table>
<p>
As
the
notion
of
ordered
collections
is
rather
important
in
data
modeling,
it
is
useful
to
have
specific
language
support.
In
JSON-LD,
a
list
may
be
represented
using
the
<code>
@list
</code>
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>
as
follows:
</p>
<del class="diff-old">{
</del>
<div class="example"><div class="example-title"><span>Example 43</span>: An ordered collection of values in JSON-LD</div><pre class="example">{
...
<del class="diff-old">  &quot;@id&quot;: &quot;http://example.org/people#joebob&quot;,
  &quot;foaf:nick&quot;:
</del>
<ins class="diff-chg">  "@id": "http://example.org/people#joebob",
  "foaf:nick":
</ins>
  <span class="diff">{
<del class="diff-old">    &quot;@list&quot;: [ &quot;joe&quot;, &quot;bob&quot;, &quot;jaybee&quot; ]
</del>
<ins class="diff-chg">    "@list": [ "joe", "bob", "jaybee" ]
</ins>
  }</span>,
...
}
</pre>
</div>
<p>
This
describes
the
use
of
this
<a class="tref internalDFN" title="array" href="#dfn-array">
array
</a>
as
being
ordered,
and
order
is
maintained
when
processing
a
document.
If
every
use
of
a
given
multi-valued
property
is
a
list,
this
may
be
abbreviated
by
setting
<code>
@container
</code>
to
<code>
@list
</code>
in
the
<a class="tref internalDFN" title="context" href="#dfn-context">
context
</a>:
</p>
<del class="diff-old">{
  &quot;@context&quot;:
</del>
<div class="example"><div class="example-title"><span>Example 44</span>: Specifying that a collection is ordered in the context</div><pre class="example">{
  <span class="diff">"@context":
  {
    ...
<del class="diff-old">    &quot;nick&quot;:
</del>
<ins class="diff-chg">    "nick":
</ins>
    {
<del class="diff-old">      &quot;@id&quot;: &quot;http://xmlns.com/foaf/0.1/nick&quot;,
      &quot;@container&quot;: &quot;@list&quot;
</del>
<ins class="diff-chg">      "@id": "http://xmlns.com/foaf/0.1/nick",
      "@container": "@list"
</ins>
    }
  }</span>,
...
<del class="diff-old">  &quot;@id&quot;: &quot;http://example.org/people#joebob&quot;,
  &quot;nick&quot;: ,
</del>
<ins class="diff-chg">  "@id": "http://example.org/people#joebob",
  "nick": <span class="diff">[ "joe", "bob", "jaybee" ]</span>,
</ins>
...
}
</pre>
</div>
<div class="note">
<div class="note-title">
<span>
Note
</span>
</div>
<p class="">
List
of
lists
are
not
allowed
in
this
version
of
JSON-LD.
This
decision
was
made
due
to
the
extreme
amount
of
added
complexity
when
processing
lists
of
lists.
</p>
</div>
<p>
<del class="diff-old">Similarly
to
</del>
<ins class="diff-chg">While
</ins>
<code>
@list
<del class="diff-old">,
there
exists
</del>
</code>
<ins class="diff-chg">is
used
to
describe
</ins><em><ins class="diff-chg">
ordered
sets
</ins></em>,
the
<del class="diff-old">keyword
</del>
<code>
@set
</code>
<ins class="diff-new">keyword
is
used
</ins>
to
describe
<em>
unordered
<del class="diff-old">sets.
While
its
</del>
<ins class="diff-chg">sets
</ins></em>.<ins class="diff-chg">
The
</ins>
use
<ins class="diff-new">of
</ins><code><ins class="diff-new">
@set
</ins></code>
in
the
body
of
a
JSON-LD
document
<del class="diff-old">represents
just
syntactic
sugar
</del>
<ins class="diff-chg">is
</ins>
optimized
away
when
processing
the
document,
<ins class="diff-new">as
</ins>
it
is
<del class="diff-old">very
</del>
<ins class="diff-chg">just
syntactic
sugar.
However,
</ins><code><ins class="diff-chg">
@set
</ins></code><ins class="diff-chg">
is
</ins>
helpful
when
used
within
the
context
of
a
document.
Values
of
terms
associated
with
a
<code>
@set
</code>
or
<code>
@list
</code>
container
are
always
represented
in
the
form
of
an
<a class="tref internalDFN" title="array" href="#dfn-array">
array
<del class="diff-old">-
</del>
</a>,
even
if
there
is
just
a
single
value
that
would
otherwise
be
optimized
to
a
non-array
form
in
<del class="diff-old">a
</del>
<ins class="diff-chg">compact
form
(see
</ins>
<a href="#compact-document-form" class="sec-ref">
<span class="secno">
<del class="diff-old">6.17
</del>
<ins class="diff-chg">6.15
</ins>
</span>
<span class="sec-title">
Compact
Document
Form
</span>
<del class="diff-old">.
</del>
</a>
<ins class="diff-chg">).
</ins>
This
makes
post-processing
of
<del class="diff-old">the
data
</del>
<ins class="diff-chg">JSON-LD
documents
</ins>
easier
as
the
data
is
always
in
array
form,
even
if
the
array
only
contains
a
single
value.
</p>
<div class="note">
<div class="note-title">
<span>
Note
</span>
</div>
<p class="">
The
use
of
<code>
@container
</code>
in
the
body
of
a
JSON-LD
document
has
no
meaning
and
is
not
allowed
by
the
JSON-LD
grammar
(see
<a href="#json-ld-grammar" class="sec-ref">
<span class="secno">
B.
</span>
<span class="sec-title">
JSON-LD
Grammar
</span>
</a>
).
</p>
</div>
</section>
<section id="embedding">
<h3>
<span class="secno">
6.10
</span>
Embedding
</h3>
<p>
<dfn title="embedding" id="dfn-embedding">
Embedding
</dfn>
is
a
JSON-LD
feature
that
allows
an
author
to
use
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
objects
</a>
as
<a class="tref internalDFN" title="property" href="#dfn-property">
property
</a>
values.
This
is
a
commonly
used
mechanism
for
creating
a
parent-child
relationship
between
two
<a class="tref internalDFN" title="node" href="#dfn-node">
nodes
</a>.
</p>
<p>
The
example
shows
two
nodes
related
by
a
property
from
the
first
node:
</p>
<del class="diff-old">  {
</del>
  <div class="example"><div class="example-title"><span>Example 45</span>: Embedding a node object as property value of another node object</div><pre class="example">{
...
<del class="diff-old">  &quot;name&quot;: &quot;Manu Sporny&quot;,
  &quot;&quot;:
</del>
<ins class="diff-chg">  "name": "Manu Sporny",
  "<span class="diff">knows</span>":
</ins>
  {
<del class="diff-old">    &quot;&quot;,
    &quot;&quot;,
</del>
<ins class="diff-chg">    "<span class="diff">@type</span>": "<span class="diff">Person</span>",
    "<span class="diff">name</span>": "<span class="diff">Gregg Kellogg</span>",
</ins>
  }
...
}
</pre>
</div>
<p>
A
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
object
</a>,
like
the
one
used
above,
may
be
used
in
any
value
position
in
the
body
of
a
JSON-LD
document.
</p>
</section>
<section id="named-graphs">
<h3>
<span class="secno">
6.11
</span>
Named
Graphs
</h3>
<p>
At
times,
it
is
necessary
to
make
statements
about
a
<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
JSON-LD
graph
</a>
itself,
rather
than
just
a
single
<a class="tref internalDFN" title="node" href="#dfn-node">
node
</a>.
This
can
be
done
by
grouping
a
set
of
<a class="tref internalDFN" title="node" href="#dfn-node">
nodes
</a>
using
the
<code>
@graph
</code>
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>.
A
developer
may
also
name
data
expressed
using
the
<code>
@graph
</code>
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>
by
pairing
it
with
an
<code>
@id
</code>
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>
as
shown
in
the
following
example:
</p>
<del class="diff-old">  {
  &quot;@context&quot;: {
    &quot;generatedAt&quot;: &quot;http://www.w3.org/ns/prov#generatedAtTime&quot;,
    &quot;Person&quot;: &quot;http://xmlns.com/foaf/0.1/Person&quot;,
    &quot;name&quot;: &quot;http://xmlns.com/foaf/0.1/name&quot;,
    &quot;knows&quot;: &quot;http://xmlns.com/foaf/0.1/knows&quot;,
    &quot;xsd&quot;: &quot;http://www.w3.org/2001/XMLSchema#&quot;
</del>
  <div class="example"><div class="example-title"><span>Example 46</span>: Identifying and making statements about a graph</div><pre class="example">{
<ins class="diff-chg">  "@context": {
    "generatedAt": "http://www.w3.org/ns/prov#generatedAtTime",
    "Person": "http://xmlns.com/foaf/0.1/Person",
    "name": "http://xmlns.com/foaf/0.1/name",
    "knows": "http://xmlns.com/foaf/0.1/knows",
    "xsd": "http://www.w3.org/2001/XMLSchema#"
</ins>
  },
<del class="diff-old">  &quot;@id&quot;: &quot;http://example.org/graphs/73&quot;,
  &quot;generatedAt&quot;: { &quot;@value&quot;: &quot;2012-04-09&quot;, &quot;@type&quot;: &quot;xsd:date&quot; },
  &quot;@graph&quot;:
</del>
  <span class="diff">"@id": "http://example.org/graphs/73",
<ins class="diff-chg">  "generatedAt": { "@value": "2012-04-09", "@type": "xsd:date" },
  "@graph":</span>
</ins>
  [
    {
<del class="diff-old">      &quot;@id&quot;: &quot;http://manu.sporny.org/i/public&quot;,
      &quot;@type&quot;: &quot;Person&quot;,
      &quot;name&quot;: &quot;Manu Sporny&quot;,
      &quot;knows&quot;: &quot;http://greggkellogg.net/foaf#me&quot;
</del>
<ins class="diff-chg">      "@id": "http://manu.sporny.org/i/public",
      "@type": "Person",
      "name": "Manu Sporny",
      "knows": "http://greggkellogg.net/foaf#me"
</ins>
    },
    {
<del class="diff-old">      &quot;@id&quot;: &quot;http://greggkellogg.net/foaf#me&quot;,
      &quot;@type&quot;: &quot;Person&quot;,
      &quot;name&quot;: &quot;Gregg Kellogg&quot;,
      &quot;knows&quot;: &quot;http://manu.sporny.org/i/public&quot;
</del>
<ins class="diff-chg">      "@id": "http://greggkellogg.net/foaf#me",
      "@type": "Person",
      "name": "Gregg Kellogg",
      "knows": "http://manu.sporny.org/i/public"
</ins>
    }
  ]
}
</pre>
</div>
<p>
The
example
above
expresses
a
<em>
named
</em>
<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
JSON-LD
graph
</a>
that
is
identified
by
the
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
<code>
http://example.org/graphs/73
</code>.
That
graph
is
composed
of
the
statements
about
Manu
and
Gregg.
Metadata
about
the
graph
itself
is
also
expressed
via
the
<code>
generatedAt
</code>
property,
which
specifies
when
the
graph
was
generated.
An
alternative
view
of
the
information
above
is
represented
in
table
form
below:
</p>
<table class="example">
<thead>
<tr>
<th>
Graph
</th>
<th>
Subject
</th>
<th>
Property
</th>
<th>
<del class="diff-old">Object
</del>
<ins class="diff-chg">Value
</ins>
</th>
<th>
<del class="diff-old">Datatype
</del>
<ins class="diff-chg">Value
Type
</ins>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
http://example.org/graphs/73
</td>
<td>
http://example.org/graphs/73
</td>
<td>
http://www.w3.org/ns/prov#generatedAtTime
</td>
<td>
2012-04-09
</td>
<td>
http://www.w3.org/2001/XMLSchema#date
</td>
</tr>
<tr>
<td>
http://example.org/graphs/73
</td>
<td>
http://manu.sporny.org/i/public
</td>
<td>
http://www.w3.org/2001/XMLSchema#type
</td>
<td>
http://xmlns.com/foaf/0.1/Person
</td>
<td>
</td>
</tr>
<tr>
<td>
http://example.org/graphs/73
</td>
<td>
http://manu.sporny.org/i/public
</td>
<td>
http://xmlns.com/foaf/0.1/name
</td>
<td>
Manu
Sporny
</td>
<td>
</td>
</tr>
<tr>
<td>
http://example.org/graphs/73
</td>
<td>
http://manu.sporny.org/i/public
</td>
<td>
http://xmlns.com/foaf/0.1/knows
</td>
<td>
http://greggkellogg.net/foaf#me
</td>
<td>
</td>
</tr>
<tr>
<td>
http://example.org/graphs/73
</td>
<td>
http://greggkellogg.net/foaf#me
</td>
<td>
http://www.w3.org/2001/XMLSchema#type
</td>
<td>
http://xmlns.com/foaf/0.1/Person
</td>
<td>
</td>
</tr>
<tr>
<td>
http://example.org/graphs/73
</td>
<td>
http://greggkellogg.net/foaf#me
</td>
<td>
http://xmlns.com/foaf/0.1/name
</td>
<td>
Gregg
Kellogg
</td>
<td>
</td>
</tr>
<tr>
<td>
http://example.org/graphs/73
</td>
<td>
http://greggkellogg.net/foaf#me
</td>
<td>
http://xmlns.com/foaf/0.1/knows
</td>
<td>
http://manu.sporny.org/i/public
</td>
<td>
</td>
</tr>
</tbody>
</table>
<p>
When
<code>
@graph
</code>
is
used
in
a
document's
top-level
object
which
has
no
other
<a class="tref internalDFN" title="property" href="#dfn-property">
properties
</a>
that
are
mapped
to
an
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
or
a
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>
it
is
considered
to
express
the
otherwise
implicit
default
graph.
This
mechanism
can
be
useful
when
a
number
of
<a class="tref internalDFN" title="node" href="#dfn-node">
nodes
</a>
<del class="diff-old">thay
may
</del>
<ins class="diff-chg">do
</ins>
not
directly
relate
to
one
another
through
a
property
or
where
<a class="tref internalDFN" title="embedding" href="#dfn-embedding">
embedding
</a>
is
not
desirable
to
the
application.
For
example:
</p>
<del class="diff-old">  {
  &quot;@context&quot;: ...,
  &quot;&quot;:
</del>
  <div class="example"><div class="example-title"><span>Example 47</span>: Using @graph to explicitly express the default graph</div><pre class="example">{
<ins class="diff-chg">  "@context": ...,
  "<span class="diff">@graph</span>":
</ins>
  [
    {
<del class="diff-old">      &quot;@id&quot;: &quot;http://manu.sporny.org/i/public&quot;,
      &quot;@type&quot;: &quot;foaf:Person&quot;,
      &quot;name&quot;: &quot;Manu Sporny&quot;,
      &quot;knows&quot;: &quot;http://greggkellogg.net/foaf#me&quot;
</del>
<ins class="diff-chg">      "@id": "http://manu.sporny.org/i/public",
      "@type": "foaf:Person",
      "name": "Manu Sporny",
      "knows": "http://greggkellogg.net/foaf#me"
</ins>
    },
    {
<del class="diff-old">      &quot;@id&quot;: &quot;http://greggkellogg.net/foaf#me&quot;,
      &quot;@type&quot;: &quot;foaf:Person&quot;,
      &quot;name&quot;: &quot;Gregg Kellogg&quot;,
      &quot;knows&quot;: &quot;http://manu.sporny.org/i/public&quot;
</del>
<ins class="diff-chg">      "@id": "http://greggkellogg.net/foaf#me",
      "@type": "foaf:Person",
      "name": "Gregg Kellogg",
      "knows": "http://manu.sporny.org/i/public"
</ins>
    }
  ]
}
</pre>
</div>
<p>
In
this
case,
embedding
doesn't
work
as
each
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
object
</a>
references
the
other.
Using
the
<code>
@graph
</code>
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>
allows
multiple
<a class="tref internalDFN" title="node" href="#dfn-node">
nodes
</a>
to
be
defined
within
an
<a class="tref internalDFN" title="array" href="#dfn-array">
array
</a>,
and
allows
the
use
of
a
shared
<a class="tref internalDFN" title="context" href="#dfn-context">
context
</a>.
This
is
equivalent
to
using
multiple
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
objects
</a>
in
array
and
defining
the
<code>
@context
</code>
within
each
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
object
</a>:
</p>
<del class="diff-old">  [
</del>
  <div class="example"><div class="example-title"><span>Example 48</span>: Context needs to be duplicated if @graph is not used</div><pre class="example">[
  {
<del class="diff-old">    
    &quot;@id&quot;: &quot;http://manu.sporny.org/i/public&quot;,
    &quot;@type&quot;: &quot;foaf:Person&quot;,
    &quot;name&quot;: &quot;Manu Sporny&quot;,
    &quot;knows&quot;: &quot;http://greggkellogg.net/foaf#me&quot;
</del>
    <span class="diff">"@context": ...,</span>
<ins class="diff-chg">    "@id": "http://manu.sporny.org/i/public",
    "@type": "foaf:Person",
    "name": "Manu Sporny",
    "knows": "http://greggkellogg.net/foaf#me"
</ins>
  },
  {
<del class="diff-old">    
    &quot;@id&quot;: &quot;http://greggkellogg.net/foaf#me&quot;,
    &quot;@type&quot;: &quot;foaf:Person&quot;,
    &quot;name&quot;: &quot;Gregg Kellogg&quot;,
    &quot;knows&quot;: &quot;http://manu.sporny.org/i/public&quot;
</del>
    <span class="diff">"@context": ...,</span>
<ins class="diff-chg">    "@id": "http://greggkellogg.net/foaf#me",
    "@type": "foaf:Person",
    "name": "Gregg Kellogg",
    "knows": "http://manu.sporny.org/i/public"
</ins>
  }
]
</pre>
</div>
</section>
<section id="identifying-blank-nodes">
<h3>
<span class="secno">
6.12
</span>
Identifying
Blank
Nodes
</h3>
<p>
At
times,
it
becomes
necessary
to
be
able
to
express
information
without
being
able
to
<del class="diff-old">specify
</del>
<ins class="diff-chg">uniquely
identify
</ins>
the
<del class="diff-old">node.
</del>
<a class="tref internalDFN" title="node" href="#dfn-node">
<ins class="diff-chg">node
</ins></a>.
This
type
of
node
is
called
a
<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
blank
node
</a>
(see
<cite>
<a href="http://www.w3.org/TR/rdf11-concepts/#section-blank-nodes">
Section
3.4:
Blank
Nodes
</a>
</cite>
of
[
<cite>
<a class="bibref" href="#bib-RDF-CONCEPTS">
RDF-CONCEPTS
</a>
</cite>
]).
In
JSON-LD,
<a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">
blank
node
identifiers
</a>
are
automatically
created
if
<del class="diff-old">a
node
</del>
<ins class="diff-chg">an
</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
IRI
</ins></abbr></a>
is
not
specified
using
the
<code>
@id
</code>
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>.
However,
authors
may
provide
identifiers
for
<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
blank
nodes
</a>
by
using
the
special
<code>
_
</code>
(underscore)
<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
prefix
</a>.
This
allows
one
to
reference
the
node
locally
within
the
document,
but
makes
it
impossible
to
reference
the
node
from
an
external
document.
The
<a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">
blank
node
identifier
</a>
is
scoped
to
the
document
in
which
it
is
used.
</p>
<del class="diff-old">  {
</del>
  <div class="example"><div class="example-title"><span>Example 49</span>: Specifying a local blank node identifier</div><pre class="example">{
...
<del class="diff-old">  &quot;@id&quot;: &quot;&quot;,
</del>
<ins class="diff-chg">  "@id": "<span class="diff">_:foo</span>",
</ins>
...
}
</pre>
</div>
<p>
The
example
above
would
set
the
node
to
<code>
_:foo
</code>,
which
can
then
be
used
elsewhere
in
the
JSON-LD
document
to
refer
back
to
the
<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
blank
node
</a>.
If
a
developer
finds
that
they
refer
to
the
<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
blank
node
</a>
more
than
once,
they
should
consider
naming
the
node
using
a
dereferenceable
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
so
that
it
can
also
be
referenced
from
other
documents.
</p>
</section>
<section id="aliasing-keywords">
<h3>
<span class="secno">
6.13
</span>
Aliasing
Keywords
</h3>
<p>
Each
of
the
JSON-LD
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keywords
</a>,
except
for
<code>
@context
</code>,
may
be
aliased
to
application-specific
keywords.
This
feature
allows
legacy
JSON
content
to
be
utilized
by
JSON-LD
by
re-using
JSON
keys
that
already
exist
in
legacy
documents.
This
feature
also
allows
developers
to
design
domain-specific
implementations
using
only
the
JSON-LD
<a class="tref internalDFN" title="context" href="#dfn-context">
context
</a>.
</p>
<del class="diff-old">{
  &quot;@context&quot;:
</del>
  <div class="example"><div class="example-title"><span>Example 50</span>: Aliasing keywords</div><pre class="example">{
<ins class="diff-chg">  "@context":
</ins>
  {
<del class="diff-old">     ,
     ,
     &quot;name&quot;: &quot;http://schema.org/name&quot;
</del>
     <span class="diff">"url": "@id"</span>,
     <span class="diff">"a": "@type"</span>,
<ins class="diff-chg">     "name": "http://xmlns.com/foaf/0.1/name"
</ins>
  },
<del class="diff-old">  &quot;&quot;: &quot;http://example.com/about#gregg&quot;,
  &quot;&quot;: &quot;http://schema.org/Person&quot;,
  &quot;name&quot;: &quot;Gregg Kellogg&quot;
</del>
<ins class="diff-chg">  "<span class="diff">url</span>": "http://example.com/about#gregg",
  "<span class="diff">a</span>": "http://xmlns.com/foaf/0.1/Person",
  "name": "Gregg Kellogg"
</ins>
}
</pre>
</div>
<p>
In
the
example
above,
the
<code>
@id
</code>
and
<code>
@type
</code>
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keywords
</a>
have
been
given
the
aliases
<strong>
url
</strong>
and
<strong>
a
</strong>,
respectively.
</p>
<del class="diff-old">6.14
Data
Annotations
It
is
common
for
developers
using
JSON
to
organize
their
data
in
ways
that
makes
working
with
the
data
more
efficient.
It
is
often
that
these
methods
of
organizing
data
are
not
meant
to
express
Linked
Data,
but
should
survive
transformation
by
JSON-LD.
For
example,
if
a
developer
organizes
employees
in
a
JSON-LD
document
by
a
company-issued
ID
number,
JSON-LD
should
not
destroy
that
'database
index'
when
transforming
the
data.
Data
annotations
allow
content
that
would
otherwise
be
removed
from
a
JSON-LD
graph
to
be
preserved
by
instructing
the
JSON-LD
processor
to
syntactically
preserve
the
annotation
information
and
continue
processing
deeper
into
the
JSON
data
structure.
{
  &quot;@context&quot;:
  {
     &quot;schema&quot;: &quot;http://schema.org/&quot;,
     &quot;Article&quot;: &quot;schema:Blog&quot;,
     &quot;name&quot;: &quot;schema:name&quot;,
     &quot;articleBody&quot;: &quot;schema:articleBody&quot;,
     &quot;wordCount&quot;: &quot;schema:wordCount&quot;,
     &quot;commentCount&quot;: &quot;http://example.com/schema/wordCount&quot;,
     &quot;blogPost&quot;: {
       &quot;@id&quot;: &quot;schema:blogPost&quot;,
       
  },
  &quot;@id&quot;: &quot;http://example.com/&quot;,
  &quot;@type&quot;: &quot;Blog&quot;,
  &quot;name&quot;: &quot;World Financial News&quot;,
  &quot;blogPost&quot;: {
     &quot;en&quot;: {
       &quot;@id&quot;: &quot;http://example.com/posts/1/en&quot;,
       &quot;articleBody&quot;: &quot;World commodities were up today with heavy trading of crude oil...&quot;,
       &quot;wordCount&quot;: 1539,
       &quot;commentCount&quot;: 64
     },
     &quot;de&quot;: {
       &quot;@id&quot;: &quot;http://example.com/posts/1/de&quot;,
       &quot;articleBody&quot;: &quot;Welt Rohstoffe waren bis heute mit schweren Handel mit Rohöl...&quot;,
       &quot;wordCount&quot;: 1204,
       &quot;commentCount&quot;: 23
     }
  }
}
</del>
<p>
<del class="diff-old">In
the
example
above,
the
blogPost
term
has
been
marked
as
a
data
annotation
container
.
The
en
,
de
,
and
ja
keys
will
effectively
</del>
<ins class="diff-chg">Since
keywords
cannot
</ins>
be
<del class="diff-old">ignored
semantically,
but
preserved
syntactically,
by
the
JSON-LD
Processor
as
annotations
.
The
interpretation
of
the
data
above
is
expressed
in
the
table
below.
Note
how
the
annotations
do
</del>
<ins class="diff-chg">redefined,
they
can
also
</ins>
not
<del class="diff-old">appear
in
the
Linked
Data
below,
but
would
continue
to
exist
if
the
document
were
compacted
or
expanded
using
a
JSON-LD
processor:
Subject
Property
Object
Datatype
http://example.com/
http://www.w3.org/1999/02/22-rdf-syntax-ns#type
http://schema.org/Blog
http://example.com/
http://schema.org/name
World
Financial
News
http://example.com/
http://schema.org/blogPost
http://example.com/posts/1/en
http://example.com/
http://schema.org/blogPost
http://example.com/posts/1/de
http://example.com/posts/1/en
http://schema.org/articleBody
World
commodities
were
up
today
with
heavy
trading
of
crude
oil...
http://example.com/posts/1/en
http://schema.org/wordCount
1539
http://www.w3.org/2001/XMLSchema#integer
http://example.com/posts/1/en
http://example.com/schema/commentCount
64
http://www.w3.org/2001/XMLSchema#integer
http://example.com/posts/1/de
http://schema.org/articleBody
Welt
Rohstoffe
waren
bis
heute
mit
schweren
Handel
mit
Rohöl...
http://example.com/posts/1/de
http://schema.org/wordCount
1204
http://www.w3.org/2001/XMLSchema#integer
http://example.com/posts/1/de
http://example.com/schema/commentCount
23
http://www.w3.org/2001/XMLSchema#integer
6.15
Explicitly
Ignoring
Data
At
times,
it
becomes
necessary
</del>
<ins class="diff-chg">be
aliased
</ins>
to
<del class="diff-old">explicitly
ignore
data
expressed
</del>
<ins class="diff-chg">other
keywords.
Every
statement
</ins>
in
<del class="diff-old">JSON
documents
because
it
has
no
semantic
meaning.
For
example,
when
</del>
the
<del class="diff-old">@vocab
keyword
is
used,
every
key
in
</del>
<ins class="diff-chg">context
having
</ins>
a
<del class="diff-old">JSON-LD
object
is
appended
to
the
vocabulary
IRI
.
The
author
may
not
want
that
behavior
to
apply
to
every
key,
and
it
may
be
easier
to
specify
just
the
keys
that
they
want
the
JSON-LD
processor
to
ignore.
For
this
purpose,
an
author
may
associate
the
null
</del>
keyword
<del class="diff-old">with
a
term
in
the
JSON-LD
Context.
{
  &quot;@context&quot;:
  {
     &quot;@vocab&quot;: &quot;http://schema.org/&quot;,
     
  },
  &quot;name&quot;: &quot;Manu Sporny&quot;,
  &quot;description&quot;: &quot;That guy&quot;,
  &quot;gender&quot;: &quot;Male&quot;,
  
}
In
the
example
above,
the
author
has
used
@vocab
</del>
as
the
<del class="diff-old">base
IRI
for
all
terms
</del>
<ins class="diff-chg">key
(as
</ins>
in
<del class="diff-old">the
document,
but
has
expressed
that
the
databaseId
</del>
<code style="white-space: nowrap">
<ins class="diff-chg">{
"@type":
...
}
</ins>
</code>
<del class="diff-old">value
should
not
</del>
<ins class="diff-chg">)
will
</ins>
be
<del class="diff-old">processed
by
the
JSON-LD
processor
by
associating
it
with
the
null
keyword
in
the
JSON-LD
Context.
</del>
<ins class="diff-chg">ignored
when
being
processed.
</ins>
</p>
</section>
<section id="expanded-document-form">
<h3>
<span class="secno">
<del class="diff-old">6.16
</del>
<ins class="diff-chg">6.14
</ins>
</span>
Expanded
Document
Form
</h3>
<p>
The
JSON-LD
<ins class="diff-new">Algorithms
and
</ins>
API
<ins class="diff-new">specification
</ins>
[
<cite>
<a class="bibref" href="#bib-JSON-LD-API">
JSON-LD-API
</a>
</cite>
]
defines
<del class="diff-old">an
</del>
<ins class="diff-chg">a
</ins>
method
for
<em>
expanding
</em>
a
JSON-LD
document.
Expansion
is
the
process
of
taking
a
JSON-LD
document
and
applying
a
<code>
@context
</code>
such
that
all
IRIs,
types,
and
values
are
expanded
so
that
the
<code>
@context
</code>
is
no
longer
necessary.
</p>
<p>
For
example,
assume
the
following
JSON-LD
input
document:
</p>
<del class="diff-old">{
   &quot;@context&quot;:
</del>
<div class="example"><div class="example-title"><span>Example 51</span>: Sample JSON-LD document</div><pre class="example">{
<ins class="diff-chg">   "@context":
</ins>
   {
<del class="diff-old">      &quot;name&quot;: &quot;http://xmlns.com/foaf/0.1/name&quot;,
      &quot;homepage&quot;: {
        &quot;@id&quot;: &quot;http://xmlns.com/foaf/0.1/homepage&quot;,
        &quot;@type&quot;: &quot;@id&quot;
</del>
<ins class="diff-chg">      "name": "http://xmlns.com/foaf/0.1/name",
      "homepage": {
        "@id": "http://xmlns.com/foaf/0.1/homepage",
        "@type": "@id"
</ins>
      }
   },
<del class="diff-old">   &quot;name&quot;: &quot;Manu Sporny&quot;,
   &quot;homepage&quot;: &quot;http://manu.sporny.org/&quot;
</del>
<ins class="diff-chg">   "name": "Manu Sporny",
   "homepage": "http://manu.sporny.org/"
</ins>
}
</pre>
</div>
<p>
Running
the
JSON-LD
Expansion
algorithm
against
the
JSON-LD
input
document
provided
above
would
result
in
the
following
output:
</p>
<del class="diff-old">[
</del>
<div class="example"><div class="example-title"><span>Example 52</span>: Expanded form for the previous example</div><pre class="example">[
  {
<del class="diff-old">    &quot;http://xmlns.com/foaf/0.1/name&quot;: [
      { &quot;@value&quot;: &quot;Manu Sporny&quot; }
</del>
<ins class="diff-chg">    "http://xmlns.com/foaf/0.1/name": [
      { "@value": "Manu Sporny" }
</ins>
    ],
<del class="diff-old">    &quot;http://xmlns.com/foaf/0.1/homepage&quot;: [
      { &quot;@id&quot;: &quot;http://manu.sporny.org/&quot; }
</del>
<ins class="diff-chg">    "http://xmlns.com/foaf/0.1/homepage": [
      { "@id": "http://manu.sporny.org/" }
</ins>
    ]
  }
]
</pre>
</div>
<p>
Expanded
document
form
is
useful
when
an
application
has
to
process
input
data
in
a
deterministic
form.
It
has
been
optimized
to
ensure
that
the
code
that
developers
have
to
write
is
minimized
compared
to
the
code
that
would
have
to
be
written
to
operate
on
<a href="#compact-document-form" class="sec-ref">
<span class="secno">
<del class="diff-old">6.17
</del>
<ins class="diff-chg">6.15
</ins>
</span>
<span class="sec-title">
Compact
Document
Form
</span>
</a>.
</p>
</section>
<section id="compact-document-form">
<h3>
<span class="secno">
<del class="diff-old">6.17
</del>
<ins class="diff-chg">6.15
</ins>
</span>
Compact
Document
Form
</h3>
<p>
The
JSON-LD
<ins class="diff-new">Algorithms
and
</ins>
API
<ins class="diff-new">specification
</ins>
[
<cite>
<a class="bibref" href="#bib-JSON-LD-API">
JSON-LD-API
</a>
</cite>
]
defines
a
method
for
<em>
compacting
</em>
a
JSON-LD
document.
Compaction
is
the
process
of
taking
a
JSON-LD
document
and
applying
a
context
such
that
<del class="diff-old">the
most
</del>
<ins class="diff-chg">a
very
</ins>
compact
form
of
the
document
is
generated.
<del class="diff-old">JSON
is
typically
expressed
in
a
very
compact,
key-value
format.
That
is,
full
IRIs
are
rarely
used
as
keys.
</del>
At
times,
a
JSON-LD
document
may
be
received
that
is
not
in
its
most
compact
form.
<del class="diff-old">JSON-LD,
</del>
<ins class="diff-chg">The
JSON-LD
Algorithms,
</ins>
via
<del class="diff-old">the
</del>
<ins class="diff-chg">an
</ins>
API,
provides
a
way
to
compact
a
JSON-LD
document.
</p>
<p>
For
example,
assume
the
following
JSON-LD
input
document:
</p>
<del class="diff-old">[
</del>
<div class="example"><div class="example-title"><span>Example 53</span>: Sample expanded JSON-LD document</div><pre class="example">[
  {
<del class="diff-old">    &quot;http://xmlns.com/foaf/0.1/name&quot;: [ &quot;Manu Sporny&quot; ],
    &quot;http://xmlns.com/foaf/0.1/homepage&quot;: [
</del>
<ins class="diff-chg">    "http://xmlns.com/foaf/0.1/name": [ "Manu Sporny" ],
    "http://xmlns.com/foaf/0.1/homepage": [
</ins>
      {
<del class="diff-old">       &quot;@id&quot;: &quot;http://manu.sporny.org/&quot;
</del>
<ins class="diff-chg">       "@id": "http://manu.sporny.org/"
</ins>
      }
    ]
  }
]
</pre>
</div>
<p>
Additionally,
assume
the
following
developer-supplied
JSON-LD
context:
</p>
<del class="diff-old">{
  &quot;@context&quot;: {
    &quot;name&quot;: &quot;http://xmlns.com/foaf/0.1/name&quot;,
    &quot;homepage&quot;: {
      &quot;@id&quot;: &quot;http://xmlns.com/foaf/0.1/homepage&quot;,
      &quot;@type&quot;: &quot;@id&quot;
</del>
<div class="example"><div class="example-title"><span>Example 54</span>: Sample context</div><pre class="example">{
<ins class="diff-chg">  "@context": {
    "name": "http://xmlns.com/foaf/0.1/name",
    "homepage": {
      "@id": "http://xmlns.com/foaf/0.1/homepage",
      "@type": "@id"
</ins>
    }
  }
}
</pre>
</div>
<p>
Running
the
JSON-LD
Compaction
algorithm
given
the
context
supplied
above
against
the
JSON-LD
input
document
provided
above
would
result
in
the
following
output:
</p>
<del class="diff-old">{
  &quot;@context&quot;: {
    &quot;name&quot;: &quot;http://xmlns.com/foaf/0.1/name&quot;,
    &quot;homepage&quot;: {
      &quot;@id&quot;: &quot;http://xmlns.com/foaf/0.1/homepage&quot;,
      &quot;@type&quot;: &quot;@id&quot;
</del>
<div class="example"><div class="example-title"><span>Example 55</span>: Compact form of the sample document once sample context has been applied</div><pre class="example">{
<ins class="diff-chg">  "@context": {
    "name": "http://xmlns.com/foaf/0.1/name",
    "homepage": {
      "@id": "http://xmlns.com/foaf/0.1/homepage",
      "@type": "@id"
</ins>
    }
  },
<del class="diff-old">  &quot;name&quot;: &quot;Manu Sporny&quot;,
  &quot;homepage&quot;: &quot;http://manu.sporny.org/&quot;
</del>
<ins class="diff-chg">  "name": "Manu Sporny",
  "homepage": "http://manu.sporny.org/"
</ins>
}
</pre>
</div>
<p>
The
compaction
algorithm
enables
a
developer
to
map
any
document
into
an
application-specific
compacted
<del class="diff-old">form
by
first
</del>
<ins class="diff-chg">form.
The
process
consists
of
expanding
the
document
(see
</ins>
<a href="#expanded-document-form" class="sec-ref">
<span class="secno">
<del class="diff-old">6.16
</del>
<ins class="diff-chg">6.14
</ins>
</span>
<span class="sec-title">
Expanded
Document
Form
</span>
<del class="diff-old">.
</del>
</a>
<ins class="diff-chg">)
and
then
using
a
developer-supplied
context
to
compact
the
expanded
document.
</ins>
While
the
context
provided
above
mapped
<code>
http://xmlns.com/foaf/0.1/name
</code>
to
<strong>
name
</strong>,
it
could
have
also
mapped
it
to
any
arbitrary
<del class="diff-old">string
</del>
<a class="tref internalDFN" title="term" href="#dfn-term">
<ins class="diff-chg">term
</ins></a>
provided
by
the
developer.
This
powerful
mechanism
allows
the
developer
to
re-shape
the
incoming
JSON
data
into
a
format
that
is
optimized
for
their
application.
</p>
</section>
<section id="data-indexing">
<h3>
<span class="secno">
<ins class="diff-new">6.16
</ins></span><ins class="diff-new">
Data
Indexing
</ins></h3><p><ins class="diff-new">
Databases
are
typically
used
to
make
access
to
data
more
efficient.
Developers
often
extend
this
sort
of
functionality
into
their
application
data
to
deliver
similar
performance
gains.
Often
this
data
does
not
have
any
meaning
from
a
Linked
Data
standpoint,
but
is
still
useful
for
an
application.
</ins></p><p><ins class="diff-new">
JSON-LD
introduces
the
notion
of
</ins><a class="tref internalDFN" title="index_map" href="#dfn-index_map"><ins class="diff-new">
index
maps
</ins></a><ins class="diff-new">
that
can
be
used
to
structure
data
into
a
form
that
is
more
efficient
to
access.
The
data
indexing
feature
allows
an
author
to
structure
data
using
a
simpley
key-value
map
where
the
keys
do
not
map
to
</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><ins class="diff-new">
IRIs
</ins></a>.<ins class="diff-new">
This
enables
direct
access
to
data
instead
of
having
to
scan
an
array
in
search
of
a
specific
item.
In
JSON-LD
such
data
can
be
specified
by
associating
the
</ins><code><ins class="diff-new">
@index
</ins></code><a class="tref internalDFN" title="keyword" href="#dfn-keyword"><ins class="diff-new">
keyword
</ins></a><ins class="diff-new">
with
a
</ins><code><ins class="diff-new">
@container
</ins></code><ins class="diff-new">
declaration
in
the
context:
</ins></p>  <div class="example"><div class="example-title"><span>Example 56</span>: Indexing data in JSON-LD</div><pre class="example">{<ins class="diff-new">
  "@context":
  {
     "schema": "http://schema.org/",
     "name": "schema:name",
     "body": "schema:articleBody",
     "words": "schema:wordCount",
     "post": {
       "@id": "schema:blogPost",
</ins>       <span class="diff">"@container": "@index"</span><ins class="diff-new">
     }
  },
  "@id": "http://example.com/",
  "@type": "schema:Blog",
  "name": "World Financial News",
</ins>  <span class="diff">"post": {<ins class="diff-new">
     "en": {
       "@id": "http://example.com/posts/1/en",
       "body": "World commodities were up today with heavy trading of crude oil...",
       "words": 1539
     },
     "de": {
       "@id": "http://example.com/posts/1/de",
       "body": "Die Werte an Warenbörsen stiegen im Sog eines starken Handels von Rohöl...",
       "words": 1204
     }</span>
  }
}
</ins></pre></div><p><ins class="diff-new">
In
the
example
above,
the
</ins><strong><ins class="diff-new">
blogPost
</ins></strong><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-new">
term
</ins></a><ins class="diff-new">
has
been
marked
as
an
</ins><a class="tref internalDFN" title="index_map" href="#dfn-index_map"><ins class="diff-new">
index
map
</ins></a>.<ins class="diff-new">
The
</ins><strong><ins class="diff-new">
en
</ins></strong>,<strong><ins class="diff-new">
de
</ins></strong>,<ins class="diff-new">
and
</ins><strong><ins class="diff-new">
ja
</ins></strong><ins class="diff-new">
keys
will
be
ignored
semantically,
but
preserved
syntactically,
by
the
JSON-LD
Processor.
This
allows
a
developer
to
access
the
German
version
of
the
</ins><strong><ins class="diff-new">
blogPost
</ins></strong><ins class="diff-new">
using
the
following
code
snippet:
</ins><code><ins class="diff-new">
obj.blogPost.de
</ins></code>.</p><p><ins class="diff-new">
The
interpretation
of
the
data
above
is
expressed
in
the
table
below.
Note
how
the
index
keys
do
not
appear
in
the
Linked
Data
below,
but
would
continue
to
exist
if
the
document
were
compacted
or
expanded
(see
</ins><a href="#compact-document-form" class="sec-ref"><span class="secno"><ins class="diff-new">
6.15
</ins></span><span class="sec-title"><ins class="diff-new">
Compact
Document
Form
</ins></span></a><ins class="diff-new">
and
</ins><a href="#expanded-document-form" class="sec-ref"><span class="secno"><ins class="diff-new">
6.14
</ins></span><span class="sec-title"><ins class="diff-new">
Expanded
Document
Form
</ins></span></a><ins class="diff-new">
)
using
a
JSON-LD
processor:
</ins></p><table class="example"><thead><tr><th><ins class="diff-new">
Subject
</ins></th><th><ins class="diff-new">
Property
</ins></th><th><ins class="diff-new">
Value
</ins></th></tr></thead><tbody><tr><td><ins class="diff-new">
http://example.com/
</ins></td><td><ins class="diff-new">
http://www.w3.org/1999/02/22-rdf-syntax-ns#type
</ins></td><td><ins class="diff-new">
http://schema.org/Blog
</ins></td></tr><tr><td><ins class="diff-new">
http://example.com/
</ins></td><td><ins class="diff-new">
http://schema.org/name
</ins></td><td><ins class="diff-new">
World
Financial
News
</ins></td></tr><tr><td><ins class="diff-new">
http://example.com/
</ins></td><td><ins class="diff-new">
http://schema.org/blogPost
</ins></td><td><ins class="diff-new">
http://example.com/posts/1/en
</ins></td></tr><tr><td><ins class="diff-new">
http://example.com/
</ins></td><td><ins class="diff-new">
http://schema.org/blogPost
</ins></td><td><ins class="diff-new">
http://example.com/posts/1/de
</ins></td></tr><tr><td><ins class="diff-new">
http://example.com/posts/1/en
</ins></td><td><ins class="diff-new">
http://schema.org/articleBody
</ins></td><td><ins class="diff-new">
World
commodities
were
up
today
with
heavy
trading
of
crude
oil...
</ins></td></tr><tr><td><ins class="diff-new">
http://example.com/posts/1/en
</ins></td><td><ins class="diff-new">
http://schema.org/wordCount
</ins></td><td><ins class="diff-new">
1539
</ins></td></tr><tr><td><ins class="diff-new">
http://example.com/posts/1/de
</ins></td><td><ins class="diff-new">
http://schema.org/articleBody
</ins></td><td><ins class="diff-new">
Die
Werte
an
Warenbörsen
stiegen
im
Sog
eines
starken
Handels
von
Rohöl...
</ins></td></tr><tr><td><ins class="diff-new">
http://example.com/posts/1/de
</ins></td><td><ins class="diff-new">
http://schema.org/wordCount
</ins></td><td><ins class="diff-new">
1204
</ins></td></tr></tbody></table></section>
</section>
<section class="appendix normative" id="data-model">
<h2>
<span class="secno">
A.
</span>
Data
Model
</h2>
<p>
JSON-LD
is
a
serialization
format
for
<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
Linked
Data
</a>
based
on
JSON.
It
is
therefore
important
to
distinguish
between
the
syntax,
which
is
defined
by
JSON
in
[
<cite>
<a class="bibref" href="#bib-RFC4627">
RFC4627
</a>
</cite>
],
and
<dfn title="json-ld_data_model" id="dfn-json-ld_data_model">
JSON-LD's
data
model
</dfn>
which
is
defined
as
follows:
</p>
<ul>
<li>
A
<dfn title="json-ld_document" id="dfn-json-ld_document">
JSON-LD
document
</dfn>
serializes
a
collection
of
<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
JSON-LD
graphs
</a>
and
comprises
exactly
one
<dfn title="default_graph" id="dfn-default_graph">
default
graph
</dfn>
and
zero
or
more
<dfn title="named_graph" id="dfn-named_graph">
named
graphs
</dfn>.
</li>
<li>
The
<a class="tref internalDFN" title="default_graph" href="#dfn-default_graph">
default
graph
</a>
does
not
have
a
name
and
<em class="rfc2119" title="may">
may
</em>
be
empty.
</li>
<li>
Each
<a class="tref internalDFN" title="named_graph" href="#dfn-named_graph">
named
graph
</a>
is
a
pair
consisting
of
<del class="diff-old">an
IRI
or
blank
node
(the
</del>
<ins class="diff-chg">a
</ins>
<dfn title="graph_name" id="dfn-graph_name">
graph
name
</dfn>
<del class="diff-old">)
</del>
and
a
<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
JSON-LD
graph
</a>.
<del class="diff-old">Whenever
possible,
the
</del>
<ins class="diff-chg">The
</ins>
<a class="tref internalDFN" title="graph_name" href="#dfn-graph_name">
graph
name
</a>
<em class="rfc2119" title="should">
should
</em>
be
an
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
<ins class="diff-new">or
</ins><a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier"><ins class="diff-new">
blank
node
identifier
</ins>
</a>.
</li>
<li>
A
<dfn title="json-ld_graph" id="dfn-json-ld_graph">
JSON-LD
graph
</dfn>
is
a
labeled
directed
<del class="diff-old">graph,
i.e.,
</del>
<ins class="diff-chg">graph
containing
</ins>
a
set
of
<ins class="diff-new">zero
or
more
</ins>
<a class="tref internalDFN" title="node" href="#dfn-node">
nodes
</a>
connected
by
<a class="tref internalDFN" title="edge" href="#dfn-edge">
edges
</a>.
</li>
<li>
Every
<dfn title="edge" id="dfn-edge">
edge
</dfn>
has
a
direction
associated
with
it
and
is
labeled
with
an
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
or
a
<a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">
blank
node
identifier
</a>.
Within
the
JSON-LD
syntax
these
edge
labels
are
called
<dfn title="property" id="dfn-property">
properties
</dfn>.
<del class="diff-old">Whenever
possible,
an
edge
should
be
labeled
with
an
IRI
.
</del>
</li>
<li>
Every
<dfn title="node" id="dfn-node">
node
</dfn>
is
<ins class="diff-new">either
</ins>
an
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>,
a
<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
blank
node
</a>,
a
<a class="tref internalDFN" title="json-ld_value" href="#dfn-json-ld_value">
JSON-LD
value
</a>,
or
a
<a class="tref internalDFN" title="list" href="#dfn-list">
list
</a>.
</li>
<li>
A
<a class="tref internalDFN" title="node" href="#dfn-node">
node
</a>
having
an
outgoing
edge
<em class="rfc2119" title="must">
must
</em>
be
an
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
or
a
<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
blank
node
</a>.
</li>
<li>
A
<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
JSON-LD
graph
</a>
<del class="diff-old">should
</del>
<em class="rfc2119" title="must not">
<ins class="diff-chg">must
</ins>
not
</em>
contain
unconnected
<a class="tref internalDFN" title="node" href="#dfn-node">
nodes
</a>,
i.e.,
nodes
which
are
not
connected
by
an
<a class="tref internalDFN" title="edge" href="#dfn-edge">
edge
</a>
to
any
other
<a class="tref internalDFN" title="node" href="#dfn-node">
node
</a>.
</li>
<li>
An
<dfn title="iri" id="dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</dfn>
(Internationalized
Resource
Identifier)
is
a
string
that
conforms
to
the
syntax
defined
in
[
<cite>
<a class="bibref" href="#bib-RFC3987">
RFC3987
</a>
</cite>
].
<a class="tref internalDFN" title="iri" href="#dfn-iri">
IRIs
</a>
used
within
a
<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
JSON-LD
graph
</a>
<em class="rfc2119" title="should">
should
</em>
return
a
<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
Linked
Data
</a>
document
describing
the
resource
denoted
by
that
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
when
being
dereferenced.
</li>
<li>
A
<dfn title="blank_node" id="dfn-blank_node">
blank
node
</dfn>
is
a
<a class="tref internalDFN" title="node" href="#dfn-node">
node
</a>
which
is
<del class="diff-old">neither
</del>
<ins class="diff-chg">not
</ins>
an
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
<del class="diff-old">,
nor
a
JSON-LD
value
,
or
a
list
</del>
</a>.
A
blank
node
<em class="rfc2119" title="may">
may
</em>
be
identified
<del class="diff-old">by
</del>
<ins class="diff-chg">using
</ins>
a
<a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">
blank
node
identifier
</a>.
</li>
<li>
A
<dfn title="blank_node_identifier" id="dfn-blank_node_identifier">
blank
node
identifier
</dfn>
is
a
string
that
can
be
used
as
an
identifier
for
a
<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
blank
node
</a>
within
the
scope
of
a
<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
JSON-LD
document
</a>.
Blank
node
identifiers
begin
with
<code>
_:
</code>.
</li>
<li>
A
<dfn title="json-ld_value" id="dfn-json-ld_value">
JSON-LD
value
</dfn>
is
a
<a class="tref internalDFN" title="string" href="#dfn-string">
string
</a>,
a
<a class="tref internalDFN" title="number" href="#dfn-number">
number
</a>,
<a class="tref internalDFN" title="true" href="#dfn-true">
true
</a>
or
<a class="tref internalDFN" title="false" href="#dfn-false">
false
</a>,
a
<a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">
typed
value
</a>,
or
a
<a class="tref internalDFN" title="language-tagged_string" href="#dfn-language-tagged_string">
language-tagged
string
</a>.
</li>
<li>
A
<dfn title="typed_value" id="dfn-typed_value">
typed
value
</dfn>
consists
of
a
value,
which
is
a
string,
and
a
type,
which
is
an
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>.
</li>
<li>
A
<dfn title="language-tagged_string" id="dfn-language-tagged_string">
language-tagged
string
</dfn>
consists
of
a
string
and
a
non-empty
language
tag
as
defined
by
[
<cite>
<a class="bibref" href="#bib-BCP47">
BCP47
</a>
</cite>
].
The
language
tag
<em class="rfc2119" title="must">
must
</em>
be
well-formed
according
to
section
<a href="http://tools.ietf.org/html/bcp47#section-2.2.9">
2.2.9
</a>
of
[
<cite>
<a class="bibref" href="#bib-BCP47">
BCP47
</a>
</cite>
],
and
<em class="rfc2119" title="must">
must
</em>
be
<del class="diff-old">normalized
to
</del>
lowercase.
</li>
<li>
A
<dfn title="list" id="dfn-list">
list
</dfn>
is
an
ordered
sequence
of
<ins class="diff-new">zero
or
more
</ins>
<a class="tref internalDFN" title="iri" href="#dfn-iri">
IRIs
</a>,
<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
blank
nodes
</a>,
and
<a class="tref internalDFN" title="json-ld_value" href="#dfn-json-ld_value">
JSON-LD
values
</a>.
</li>
</ul>
<div class="issue">
<div class="issue-title">
<span>
Issue
<ins class="diff-new">1
</ins>
</span>
</div>
<p class="">
In
contrast
to
the
RDF
data
model
as
defined
in
[
<cite>
<a class="bibref" href="#bib-RDF-CONCEPTS">
RDF-CONCEPTS
</a>
</cite>
],
JSON-LD
allows
blank
nodes
as
property
labels
and
graph
names.
This
feature
is
controversial
in
the
RDF
WG
and
may
be
removed
in
the
future.
</p>
</div>
<p>
<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
JSON-LD
documents
</a>
<em class="rfc2119" title="may">
may
</em>
contain
data
that
cannot
be
represented
by
the
<a class="tref internalDFN" title="json-ld_data_model" href="#dfn-json-ld_data_model">
data
model
</a>
defined
above.
Unless
otherwise
specified,
such
data
is
ignored
when
a
<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
JSON-LD
document
</a>
is
being
processed.
This
means,
e.g.,
that
properties
which
are
not
mapped
to
an
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
or
<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
blank
node
</a>
will
be
ignored.
</p>
<p style="text-align: center">
<img src="linked-data-graph.png" title="An illustration of JSON-LD's data model">
</p>
<p style="text-align: center">
<del class="diff-old">Figure
1:
</del>
<ins class="diff-chg">Figure&nbsp;1:
</ins>
An
illustration
of
JSON-LD's
data
model.
</p>
</section>
<section class="appendix normative" id="json-ld-grammar">
<h2>
<span class="secno">
B.
</span>
JSON-LD
Grammar
</h2>
<em>
This
section
is
normative
</em>
<del class="diff-old">Issue
114
This
section
is
an
attempt
to
formalize
a
normative
grammar
for
JSON-LD.
</del>
<p>
This
appendix
restates
the
syntactic
conventions
described
in
the
previous
sections
more
formally.
</p>
<div class="note">
<div class="note-title">
<span>
Note
</span>
</div>
<p class="">
The
JSON-LD
context
allows
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keywords
</a>
<a href="#aliasing-keywords" class="sec-ref">
<span class="secno">
6.13
</span>
<span class="sec-title">
Aliasing
Keywords
</span>
</a>
).
Whenever
a
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>
is
discussed
in
this
grammar,
the
statements
also
apply
to
an
alias
for
that
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>.
For
example,
if
the
<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
active
context
</a>
defines
the
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
<code>
id
</code>
as
an
alias
for
<code>
@id
</code>,
that
alias
may
be
legitimately
used
as
a
substitution
for
<code>
@id
</code>.
Note
that
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>
aliases
are
not
expanded
during
context
processing.
</p>
</div>
<p>
A
<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
JSON-LD
document
</a>
<em class="rfc2119" title="must">
must
</em>
be
a
valid
JSON
document
as
described
in
[
<cite>
<a class="bibref" href="#bib-RFC4627">
RFC4627
</a>
</cite>
].
</p>
<p>
A
<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
JSON-LD
document
</a>
<em class="rfc2119" title="must">
must
</em>
be
a
single
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
object
</a>
or
a
JSON
<a class="tref internalDFN" title="array" href="#dfn-array">
array
</a>
containing
a
set
of
one
or
more
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
objects
</a>.
</p>
<section id="grammar-node-object" typeof="bibo:Chapter" resource="#grammar-node-object" rel="bibo:chapter">
<h3>
<span class="secno">
B.1
</span>
Node
Object
</h3>
<p>
A
<dfn title="node_object" id="dfn-node_object">
node
object
</dfn>
represents
zero
or
more
properties
of
a
<a class="tref internalDFN" title="node" href="#dfn-node">
node
</a>
in
the
<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
JSON-LD
graph
</a>
serialized
by
the
<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
JSON-LD
document
</a>.
A
<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
JSON
<del class="diff-old">Object
</del>
<ins class="diff-chg">object
</ins>
</a>
is
a
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
object
</a>
if
it
exists
outside
of
<del class="diff-old">the
</del>
<ins class="diff-chg">a
</ins>
JSON-LD
<del class="diff-old">Context
</del>
<a class="tref internalDFN" title="context" href="#dfn-context">
<ins class="diff-chg">context
</ins></a>
and:
</p>
<ul>
<li>
it
does
not
contain
the
<code>
@value
</code>,
<code>
@list
</code>,
<del class="diff-old">@annotation
,
</del>
or
<code>
@set
</code>
keywords,
<del class="diff-old">or
</del>
<ins class="diff-chg">and
</ins>
</li>
<li>
it
<del class="diff-old">does
not
contain
the
@graph
keyword
and
</del>
is
<ins class="diff-new">not
</ins>
the
top-most
<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
JSON
<del class="diff-old">Object
</del>
<ins class="diff-chg">object
</ins>
</a>
in
the
JSON-LD
<del class="diff-old">document.
</del>
<ins class="diff-chg">document
consisting
of
no
other
members
than
</ins><code><ins class="diff-chg">
@graph
</ins></code><ins class="diff-chg">
and
</ins><code><ins class="diff-chg">
@context
</ins></code>.
</li>
</ul>
<p>
The
<a class="tref internalDFN" title="property" href="#dfn-property">
properties
</a>
of
a
<a class="tref internalDFN" title="node" href="#dfn-node">
node
</a>
in
<del class="diff-old">the
</del>
<ins class="diff-chg">a
</ins>
<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
JSON-LD
graph
</a>
may
be
spread
among
different
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
objects
</a>
within
a
document.
When
that
happens,
the
keys
of
the
different
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
objects
</a>
are
merged
to
create
the
properties
of
the
resulting
<a class="tref internalDFN" title="node" href="#dfn-node">
node
</a>.
</p>
<p>
A
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
object
</a>
<em class="rfc2119" title="must">
must
</em>
be
a
<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
JSON
object
<del class="diff-old">that
contains
one
or
more
key-value
pairs.
Keys
must
either
be
</del>
</a>.
<ins class="diff-chg">All
keys
which
are
not
</ins>
<a class="tref internalDFN" title="iri" href="#dfn-iri">
IRIs
</a>,
<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
compact
IRIs
</a>,
<a class="tref internalDFN" title="term" href="#dfn-term">
terms
</a>
valid
in
the
<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
active
context
</a>,
or
one
of
the
following
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keywords
<del class="diff-old">:
</del>
</a>
<em class="rfc2119" title="must">
<ins class="diff-chg">must
</ins></em><ins class="diff-chg">
be
ignored
when
processed:
</ins>
</p>
<ul>
<li>
<code>
@context
</code>,
</li>
<li>
<code>
@graph
</code>,
</li>
<li>
<code>
@id
</code>,
<del class="diff-old">or
</del>
</li>
<li>
<code>
@type
</code>,
<ins class="diff-new">or
</ins></li><li><code><ins class="diff-new">
@index
</ins>
</code>
</li>
</ul>
<p>
If
the
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
object
</a>
contains
the
<code>
@context
</code>
key,
its
value
<em class="rfc2119" title="must">
must
</em>
be
one
of
the
following:
</p>
<ul>
<li>
<a class="tref internalDFN" title="null" href="#dfn-null">
<ins class="diff-new">null
</ins></a>,</li><li>
an
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>,
</li>
<li>
a
<a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">
context
definition
</a>,
or
</li>
<li>
an
<a class="tref internalDFN" title="array" href="#dfn-array">
array
</a>
composed
of
any
number
of
the
previous
two
expressions.
</li>
</ul>
<p>
If
the
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
object
</a>
contains
the
<code>
@id
</code>
key,
its
value
<em class="rfc2119" title="must">
must
</em>
be
an
<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
<ins class="diff-chg">absolute
</ins>
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>,
a
<del class="diff-old">compact
</del>
<a class="tref internalDFN" title="relative_iri" href="#dfn-relative_iri">
<ins class="diff-chg">relative
</ins>
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
<del class="diff-old">(including
blank
node
identifiers
),
</del>
</a>,
or
a
<del class="diff-old">term
defined
in
the
active
context
expanding
into
an
</del>
<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
<ins class="diff-chg">compact
</ins>
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
<del class="diff-old">or
a
</del>
<ins class="diff-chg">(including
</ins>
<a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">
blank
node
<del class="diff-old">identifier
.
</del>
<ins class="diff-chg">identifiers
</ins></a><ins class="diff-chg">
).
</ins>
See
<a href="#node-identifiers" class="sec-ref">
<span class="secno">
<del class="diff-old">5.4
</del>
<ins class="diff-chg">5.3
</ins>
</span>
<span class="sec-title">
Node
Identifiers
</span>
</a>,
<a href="#compact-iris" class="sec-ref">
<span class="secno">
6.1
</span>
<span class="sec-title">
Compact
IRIs
</span>
</a>,
and
<a href="#identifying-blank-nodes" class="sec-ref">
<span class="secno">
6.12
</span>
<span class="sec-title">
Identifying
Blank
Nodes
</span>
</a>
for
further
discussion
on
<code>
@id
</code>
values.
</p>
<p>
If
the
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
object
</a>
contains
the
<code>
@type
</code>
key,
its
value
<em class="rfc2119" title="must">
must
</em>
be
either
an
<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
absolute
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>,
a
<a class="tref internalDFN" title="relative_iri" href="#dfn-relative_iri">
<ins class="diff-new">relative
</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
IRI
</ins></abbr></a>,<ins class="diff-new">
a
</ins>
<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
compact
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
<del class="diff-old">(excluding
</del>
<ins class="diff-chg">(including
</ins>
<a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">
blank
node
<del class="diff-old">identifier
</del>
<ins class="diff-chg">identifiers
</ins>
</a>
),
a
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
defined
in
the
<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
active
context
</a>
expanding
into
an
<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
absolute
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>,
or
an
<a class="tref internalDFN" title="array" href="#dfn-array">
array
</a>
of
any
of
these.
See
<a href="#specifying-the-type" class="sec-ref">
<span class="secno">
<del class="diff-old">5.5
</del>
<ins class="diff-chg">5.4
</ins>
</span>
<span class="sec-title">
Specifying
the
Type
</span>
</a>
for
further
discussion
on
<code>
@type
</code>
values.
</p>
<p>
If
the
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
object
</a>
contains
the
<code>
@graph
</code>
key,
its
value
<em class="rfc2119" title="must">
must
</em>
be
a
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
object
</a>
or
an
<a class="tref internalDFN" title="array" href="#dfn-array">
array
</a>
of
zero
or
more
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
objects
</a>.
If
the
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
object
</a>
contains
an
<code>
@id
</code>
keyword,
its
value
is
used
as
the
label
of
a
named
graph.
See
<a href="#named-graphs" class="sec-ref">
<span class="secno">
6.11
</span>
<span class="sec-title">
Named
Graphs
</span>
</a>
for
further
discussion
on
<code>
@graph
</code>
values.
<del class="diff-old">Note
</del>
As
a
special
case,
if
a
<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
JSON
object
</a>
contains
no
keys
other
than
<code>
@graph
</code>
and
<code>
@context
</code>,
and
the
<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
JSON
object
</a>
is
the
root
of
the
JSON-LD
document,
the
<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
JSON
object
</a>
is
not
treated
as
a
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
object
</a>
;
this
is
used
as
a
way
of
defining
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
definitions
</a>
that
may
not
form
a
connected
graph.
This
allows
a
<a class="tref internalDFN" title="context" href="#dfn-context">
context
</a>
to
be
defined
which
is
shared
by
all
of
the
constituent
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
objects
</a>.
</p>
<p>
<del class="diff-old">A
JSON-LD
document
</del>
<ins class="diff-chg">If
the
</ins><a class="tref internalDFN" title="node_object" href="#dfn-node_object"><ins class="diff-chg">
node
object
</ins>
</a>
<ins class="diff-chg">contains
the
</ins><code><ins class="diff-chg">
@index
</ins></code><ins class="diff-chg">
key,
its
value
</ins><em class="rfc2119" title="must">
must
<del class="diff-old">not
</del>
</em>
<del class="diff-old">contain
any
keyword
</del>
<ins class="diff-chg">be
a
</ins><a class="tref internalDFN" title="string" href="#dfn-string"><ins class="diff-chg">
string
</ins></a>.<ins class="diff-chg">
See
section
</ins><a href="#data-indexing" class="sec-ref"><span class="secno"><ins class="diff-chg">
6.16
</ins></span><span class="sec-title"><ins class="diff-chg">
Data
Indexing
</ins></span>
</a>
<del class="diff-old">that
expands
to
another
keyword.
</del>
<ins class="diff-chg">for
further
discussion
on
</ins><code><ins class="diff-chg">
@index
</ins></code><ins class="diff-chg">
values.
</ins>
</p>
<p>
Keys
in
a
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
object
</a>
that
are
not
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keywords
</a>
<em class="rfc2119" title="must">
must
</em>
expand
to
an
<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
absolute
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
using
the
<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
active
context
</a>.
The
values
associated
with
these
keys
<em class="rfc2119" title="must">
must
</em>
be
one
of
the
following:
</p>
<ul>
<li>
<a class="tref internalDFN" title="string" href="#dfn-string">
string
</a>,
</li>
<li>
<a class="tref internalDFN" title="number" href="#dfn-number">
number
</a>,
</li>
<li>
<a class="tref internalDFN" title="true" href="#dfn-true">
true
</a>,
</li>
<li>
<a class="tref internalDFN" title="false" href="#dfn-false">
false
</a>,
</li>
<li>
<a class="tref internalDFN" title="null" href="#dfn-null">
null
</a>,
</li>
<li>
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
object
</a>,
</li>
<li>
<a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">
expanded
<del class="diff-old">typed
</del>
value
</a>,
</li>
<li>
<del class="diff-old">expanded
language-tagged
string
,
</del>
<a class="tref internalDFN" title="list" href="#dfn-list">
list
</a>
or
<a class="tref internalDFN" title="set" href="#dfn-set">
set
</a>,
</li>
<li>
an
<a class="tref internalDFN" title="array" href="#dfn-array">
array
</a>
of
zero
or
more
of
the
possibilities
above,
</li>
<li>
a
<a class="tref internalDFN" title="language_map" href="#dfn-language_map">
language
map
</a>,
or
</li>
<li>
an
<del class="diff-old">annotation
</del>
<a class="tref internalDFN" title="index_map" href="#dfn-index_map">
<ins class="diff-chg">index
</ins>
map
</a>
</li>
</ul>
</section>
<section id="grammar-term-reference" typeof="bibo:Chapter" resource="#grammar-term-reference" rel="bibo:chapter">
<h3>
<span class="secno">
B.2
</span>
Term
</h3>
<p>
A
<dfn title="term" id="dfn-term">
term
</dfn>
is
a
short-hand
<a class="tref internalDFN" title="string" href="#dfn-string">
string
</a>
that
expands
to
an
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
or
a
<a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">
blank
node
identifier
</a>.
</p>
<p>
A
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
<em class="rfc2119" title="must not">
must
not
</em>
equal
any
of
the
JSON-LD
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keywords
</a>.
</p>
<p>
To
avoid
forward-compatibility
issues,
a
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
<em class="rfc2119" title="should not">
should
not
</em>
start
with
an
<code>
@
</code>
character
as
future
versions
of
JSON-LD
may
introduce
additional
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keywords
</a>.
Furthermore,
the
use
of
empty
terms
(
<code>
<del class="diff-old">&quot;&quot;
</del>
<ins class="diff-chg">""
</ins>
</code>
)
is
discouraged
as
not
all
programming
languages
are
able
to
handle
empty
property
names.
</p>
<p>
See
<a href="#the-context" class="sec-ref">
<span class="secno">
5.1
</span>
<span class="sec-title">
The
Context
</span>
</a>
and
<a href="#iris" class="sec-ref">
<span class="secno">
<del class="diff-old">5.3
</del>
<ins class="diff-chg">5.2
</ins>
</span>
<span class="sec-title">
IRIs
</span>
</a>
for
further
discussion
on
mapping
<a class="tref internalDFN" title="term" href="#dfn-term">
terms
</a>
to
<a class="tref internalDFN" title="iri" href="#dfn-iri">
IRIs
</a>.
</p>
</section>
<section id="grammar-language-map" typeof="bibo:Chapter" resource="#grammar-language-map" rel="bibo:chapter">
<h3>
<span class="secno">
B.3
</span>
Language
Map
</h3>
<p>
A
<dfn title="language_map" id="dfn-language_map">
language
map
</dfn>
is
used
to
associate
a
language
with
a
value
in
a
way
that
allows
easy
programmatic
access.
A
<a class="tref internalDFN" title="language_map" href="#dfn-language_map">
language
map
</a>
may
be
used
as
a
term
value
within
a
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
object
</a>
if
the
term
is
defined
with
<code>
@container
</code>
set
to
<code>
@language
</code>.
The
keys
of
a
<a class="tref internalDFN" title="language_map" href="#dfn-language_map">
language
map
</a>
<em class="rfc2119" title="must">
must
</em>
be
lowercase
[
<cite>
<a class="bibref" href="#bib-BCP47">
BCP47
</a>
</cite>
]
<a class="tref internalDFN" title="string" href="#dfn-string">
strings
</a>
with
an
associated
value
that
is
any
of
the
following
types:
</p>
<ul>
<li>
<a class="tref internalDFN" title="string" href="#dfn-string">
string
</a>,
or
</li>
<li>
an
<a class="tref internalDFN" title="array" href="#dfn-array">
array
</a>
of
zero
or
more
strings
</li>
</ul>
<p>
See
<del class="diff-old">6.3
Language-tagged
Strings
</del>
<a href="#language-tagged-strings">
</a>
for
further
discussion
on
language
maps.
</p>
</section>
<section id="grammar-index-map" typeof="bibo:Chapter" resource="#grammar-index-map" rel="bibo:chapter">
<h3>
<span class="secno">
B.4
</span>
<del class="diff-old">Annotation
</del>
<ins class="diff-chg">Index
</ins>
Map
</h3>
<p>
An
<del class="diff-old">annotation
</del>
<dfn title="index_map" id="dfn-index_map">
<ins class="diff-chg">index
</ins>
map
</dfn>
allows
keys
that
have
no
semantic
meaning,
but
should
be
preserved
regardless,
to
be
used
in
JSON-LD
documents.
An
<del class="diff-old">annotation
</del>
<a class="tref internalDFN" title="index_map" href="#dfn-index_map">
<ins class="diff-chg">index
</ins>
map
</a>
may
be
used
as
a
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
value
within
a
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
object
</a>
if
the
term
is
defined
with
<code>
@container
</code>
set
to
<code>
<del class="diff-old">@annotation
</del>
<ins class="diff-chg">@index
</ins>
</code>.
The
<del class="diff-old">keys
</del>
<ins class="diff-chg">values
</ins>
of
<del class="diff-old">a
annotation
</del>
<ins class="diff-chg">the
members
of
an
</ins><a class="tref internalDFN" title="index_map" href="#dfn-index_map"><ins class="diff-chg">
index
</ins>
map
</a>
<em class="rfc2119" title="must">
must
</em>
be
<del class="diff-old">strings
with
an
associated
value
that
is
any
</del>
<ins class="diff-chg">one
</ins>
of
the
following
types:
</p>
<ul>
<li>
<a class="tref internalDFN" title="string" href="#dfn-string">
string
</a>,
</li>
<li>
<a class="tref internalDFN" title="number" href="#dfn-number">
number
</a>,
</li>
<li>
<a class="tref internalDFN" title="true" href="#dfn-true">
true
</a>,
</li>
<li>
<a class="tref internalDFN" title="false" href="#dfn-false">
false
</a>,
</li>
<li>
<a class="tref internalDFN" title="null" href="#dfn-null">
null
</a>,
</li>
<li>
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
object
</a>,
</li>
<li>
<a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">
expanded
value
</a>,
</li>
<li>
an
<a class="tref internalDFN" title="array" href="#dfn-array">
array
</a>
of
zero
or
more
of
the
above
possibilities
</li>
</ul>
<p>
See
<a href="#data-indexing" class="sec-ref">
<span class="secno">
<del class="diff-old">6.14
</del>
<ins class="diff-chg">6.16
</ins>
</span>
<span class="sec-title">
Data
<del class="diff-old">Annotations
</del>
<ins class="diff-chg">Indexing
</ins>
</span>
</a>
for
further
information
on
this
topic.
</p>
</section>
<section id="grammar-expanded-values" typeof="bibo:Chapter" resource="#grammar-expanded-values" rel="bibo:chapter">
<h3>
<span class="secno">
B.5
</span>
Expanded
Values
</h3>
<p>
An
<dfn title="expanded_value" id="dfn-expanded_value">
expanded
value
</dfn>
is
used
to
explicitly
associate
a
type
or
a
language
with
a
value
to
create
a
<a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">
typed
value
</a>
or
a
<a class="tref internalDFN" title="language-tagged_string" href="#dfn-language-tagged_string">
language-tagged
string
</a>.
</p>
<p>
An
<a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">
expanded
value
</a>
<em class="rfc2119" title="must">
must
</em>
be
a
<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
JSON
object
</a>
containing
the
<code>
@value
</code>
key.
It
<em class="rfc2119" title="may">
may
</em>
also
contain
a
<code>
@type
<del class="diff-old">or
</del>
</code>,
a
<code>
@language
</code>,
<ins class="diff-new">or
an
</ins><code><ins class="diff-new">
@index
</ins>
</code>
key
but
<em class="rfc2119" title="must not">
must
not
</em>
contain
both
a
<code>
@type
</code>
and
a
<code>
@language
</code>
<del class="diff-old">key.
</del>
<ins class="diff-chg">key
at
the
same
time.
</ins>
An
<a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">
expanded
value
</a>
<em class="rfc2119" title="must not">
must
not
</em>
contain
keys
other
than
<code>
@value
</code>,
<code>
<ins class="diff-new">@type
</ins></code>,<code>
@language
</code>,
and
<code>
<del class="diff-old">@type
</del>
<ins class="diff-chg">@index
</ins>
</code>.
An
<a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">
expanded
value
</a>
that
contains
a
<code>
@type
</code>
key
is
called
an
<dfn title="expanded_typed_value" id="dfn-expanded_typed_value">
expanded
typed
value
</dfn>.
An
<a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">
expanded
value
</a>
that
contains
a
<code>
@language
</code>
key
is
called
an
<dfn title="expanded_language-tagged_string" id="dfn-expanded_language-tagged_string">
expanded
language-tagged
string
</dfn>.
</p>
<p>
The
value
associated
with
the
<code>
@value
</code>
key
<em class="rfc2119" title="must">
must
</em>
be
either
a
<a class="tref internalDFN" title="string" href="#dfn-string">
string
</a>,
<a class="tref internalDFN" title="number" href="#dfn-number">
number
</a>,
<a class="tref internalDFN" title="true" href="#dfn-true">
true
</a>,
<a class="tref internalDFN" title="false" href="#dfn-false">
false
</a>
or
<a class="tref internalDFN" title="null" href="#dfn-null">
null
</a>.
</p>
<p>
The
value
associated
with
the
<code>
<ins class="diff-new">@type
</ins></code><ins class="diff-new">
key
</ins><em class="rfc2119" title="must"><ins class="diff-new">
must
</ins></em><ins class="diff-new">
be
a
</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-new">
term
</ins></a>,<ins class="diff-new">
a
</ins><a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri"><ins class="diff-new">
compact
</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
IRI
</ins></abbr></a>,<ins class="diff-new">
an
</ins><a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri"><ins class="diff-new">
absolute
</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
IRI
</ins></abbr></a>,<ins class="diff-new">
a
</ins><a class="tref internalDFN" title="relative_iri" href="#dfn-relative_iri"><ins class="diff-new">
relative
</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
IRI
</ins></abbr></a>,<ins class="diff-new">
or
</ins><a class="tref internalDFN" title="null" href="#dfn-null"><ins class="diff-new">
null
</ins></a>.</p><p><ins class="diff-new">
The
value
associated
with
the
</ins><code>
@language
</code>
key
<em class="rfc2119" title="must">
must
</em>
have
the
lexical
form
described
in
[
<cite>
<a class="bibref" href="#bib-BCP47">
BCP47
</a>
</cite>
],
or
be
<a class="tref internalDFN" title="null" href="#dfn-null">
null
</a>.
</p>
<p>
The
value
associated
with
the
<code>
<del class="diff-old">@annotation
</del>
<ins class="diff-chg">@index
</ins>
</code>
key
<em class="rfc2119" title="must">
must
</em>
be
a
<a class="tref internalDFN" title="string" href="#dfn-string">
string
</a>.
</p>
<p>
<del class="diff-old">The
value
associated
with
the
@type
key
must
be
a
term
,
a
compact
IRI
,
an
absolute
IRI
,
or
null
.
</del>
See
<a href="#typed-values" class="sec-ref">
<span class="secno">
6.2
</span>
<span class="sec-title">
Typed
Values
</span>
</a>
and
<del class="diff-old">6.3
Language-tagged
Strings
</del>
<a href="#language-tagged-strings">
</a>
for
more
information
on
<a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">
expanded
values
</a>.
</p>
</section>
<section id="grammar-set-list" typeof="bibo:Chapter" resource="#grammar-set-list" rel="bibo:chapter">
<h3>
<span class="secno">
B.6
</span>
List
and
Set
Values
</h3>
<p>
A
<a class="tref internalDFN" title="list" href="#dfn-list">
list
</a>
represents
an
<em>
ordered
</em>
set
of
values.
A
<dfn title="set" id="dfn-set">
set
</dfn>
represents
an
<em>
unordered
</em>
set
of
values.
Unless
otherwise
<del class="diff-old">specified
(typically
through
the
use
of
a
list
),
</del>
<ins class="diff-chg">specified,
</ins>
<a class="tref internalDFN" title="array" href="#dfn-array">
arrays
</a>
are
unordered
in
JSON-LD.
As
such,
the
<code>
@set
</code>
keyword,
when
used
in
the
body
of
a
JSON-LD
document,
represents
just
syntactic
sugar
which
is
optimized
away
when
processing
the
document.
However,
it
is
very
helpful
when
used
within
the
context
of
a
document.
Values
of
terms
associated
with
a
<code>
@set
</code>
or
<code>
@list
</code>
container
will
always
be
represented
in
the
form
of
an
array
when
a
document
is
processed
-
even
if
there
is
just
a
single
value
that
would
otherwise
be
optimized
to
a
non-array
form
in
<a href="#compact-document-form">
compact
document
form
</a>.
This
simplifies
post-processing
of
the
data
as
the
data
is
always
in
array
form.
</p>
<p>
A
<a class="tref internalDFN" title="list" href="#dfn-list">
list
</a>
<em class="rfc2119" title="must">
must
</em>
be
a
<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
JSON
object
</a>
that
contains
<del class="diff-old">a
single
key-value
pair
where
the
key
is
</del>
<ins class="diff-chg">no
other
keys
than
</ins>
<code>
@list
</code>,
<code>
<ins class="diff-new">@context
</ins></code>,<ins class="diff-new">
and
</ins><code><ins class="diff-new">
@index
</ins>
</code>.
</p>
<p>
A
<a class="tref internalDFN" title="set" href="#dfn-set">
set
</a>
<em class="rfc2119" title="must">
must
</em>
be
a
<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
JSON
object
</a>
that
<ins class="diff-new">that
</ins>
contains
<del class="diff-old">a
single
key-value
pair
where
the
key
is
</del>
<ins class="diff-chg">no
other
keys
than
</ins>
<code>
@set
</code>,
<code>
<ins class="diff-new">@context
</ins></code>,<ins class="diff-new">
and
</ins><code><ins class="diff-new">
@index
</ins>
</code>.
<ins class="diff-new">Please
note
that
the
</ins><code><ins class="diff-new">
@index
</ins></code><ins class="diff-new">
key
will
be
ignored,
and
thus
be
dropped,
when
being
processed.
</ins>
</p>
<p>
In
both
cases,
the
value
associated
with
the
<del class="diff-old">key
</del>
<ins class="diff-chg">keys
</ins><code><ins class="diff-chg">
@list
</ins></code><ins class="diff-chg">
and
</ins><code><ins class="diff-chg">
@set
</ins></code>
<em class="rfc2119" title="must">
must
</em>
be
an
<a class="tref internalDFN" title="array" href="#dfn-array">
array
</a>
of
any
of
the
following:
</p>
<ul>
<li>
<a class="tref internalDFN" title="string" href="#dfn-string">
string
</a>,
</li>
<li>
<a class="tref internalDFN" title="number" href="#dfn-number">
number
</a>,
</li>
<li>
<a class="tref internalDFN" title="true" href="#dfn-true">
true
</a>,
</li>
<li>
<a class="tref internalDFN" title="false" href="#dfn-false">
false
</a>,
</li>
<li>
<a class="tref internalDFN" title="null" href="#dfn-null">
null
</a>,
</li>
<li>
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
object
</a>,
<del class="diff-old">expanded
typed
value
,
</del>
or
</li>
<li>
<a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">
expanded
<del class="diff-old">language-tagged
string
</del>
<ins class="diff-chg">value
</ins>
</a>
</li>
</ul>
<p>
See
<a href="#sets-and-lists" class="sec-ref">
<span class="secno">
6.9
</span>
<span class="sec-title">
Sets
and
Lists
</span>
</a>
for
further
discussion
on
List
and
Set
Values.
</p>
</section>
<section id="grammar-context" typeof="bibo:Chapter" resource="#grammar-context" rel="bibo:chapter">
<h3>
<span class="secno">
B.7
</span>
Context
Definition
</h3>
<p>
A
<dfn title="context_definition" id="dfn-context_definition">
context
definition
</dfn>
defines
a
<a class="tref internalDFN" title="local_context" href="#dfn-local_context">
local
context
</a>
in
a
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
object
</a>.
</p>
<p>
A
<a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">
context
definition
</a>
<em class="rfc2119" title="must">
must
</em>
be
a
<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
JSON
object
</a>
containing
one
or
more
key-value
pairs.
Keys
<em class="rfc2119" title="must">
must
</em>
either
be
<a class="tref internalDFN" title="term" href="#dfn-term">
terms
</a>
or
<code>
@language
</code>
or
<code>
@vocab
</code>
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keywords
</a>.
</p>
<p>
If
the
<a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">
context
definition
</a>
has
a
<code>
@language
</code>
key,
its
value
<em class="rfc2119" title="must">
must
</em>
have
the
lexical
form
described
in
[
<cite>
<a class="bibref" href="#bib-BCP47">
BCP47
</a>
</cite>
]
or
be
<a class="tref internalDFN" title="null" href="#dfn-null">
null
</a>.
</p>
<p>
If
the
<a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">
context
definition
</a>
has
a
<code>
@vocab
</code>
key,
its
value
<em class="rfc2119" title="must">
must
</em>
have
the
lexical
form
of
<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
absolute
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>
or
be
<a class="tref internalDFN" title="null" href="#dfn-null">
null
</a>.
</p>
<p>
<a class="tref internalDFN" title="term" href="#dfn-term">
Term
</a>
values
<em class="rfc2119" title="must">
must
</em>
be
either
a
<a class="tref internalDFN" title="string" href="#dfn-string">
string
</a>,
<a class="tref internalDFN" title="null" href="#dfn-null">
null
<del class="diff-old">,
</del>
</a>,
or
an
<a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">
expanded
term
definition
</a>.
</p>
<p>
An
<a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">
expanded
term
definition
</a>
is
used
to
describe
the
mapping
between
a
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
and
its
expanded
identifier,
as
well
as
other
properties
of
the
value
associated
with
the
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
when
it
is
used
as
key
in
a
<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
node
object
</a>.
</p>
<p>
An
<a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">
expanded
term
definition
</a>
<em class="rfc2119" title="should">
should
</em>
be
a
<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
JSON
object
</a>
composed
of
zero
or
more
keys
from
<code>
@id
</code>,
<code>
@type
</code>,
<code>
@language
</code>
or
<code>
@container
</code>.
An
<a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">
expanded
term
definition
</a>
<em class="rfc2119" title="should not">
should
not
</em>
contain
any
other
keys.
</p>
<p>
If
the
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
definition
is
not
<a class="tref internalDFN" title="null" href="#dfn-null">
null
<del class="diff-old">,
</del>
</a>,
a
<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
compact
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>,
or
an
<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
absolute
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
<del class="diff-old">,
</del>
</a>
<ins class="diff-chg">and
the
</ins><a class="tref internalDFN" title="active_context" href="#dfn-active_context"><ins class="diff-chg">
active
context
</ins></a><ins class="diff-chg">
does
not
have
an
</ins><code><ins class="diff-chg">
@vocab
</ins></code><ins class="diff-chg">
mapping,
</ins>
the
<a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">
expanded
term
definition
</a>
<em class="rfc2119" title="must">
must
</em>
include
the
<code>
@id
</code>
key.
</p>
<p>
If
the
<a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">
expanded
term
definition
</a>
contains
the
<code>
@id
</code>
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>,
its
value
<em class="rfc2119" title="must">
must
</em>
be
<a class="tref internalDFN" title="null" href="#dfn-null">
null
<del class="diff-old">,
</del>
</a>,
an
<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
<ins class="diff-chg">absolute
</ins>
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>,
a
<a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">
<ins class="diff-new">blank
node
identifier
</ins></a>,<ins class="diff-new">
a
</ins>
<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
compact
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>,
a
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
defined
in
the
defining
<a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">
context
definition
</a>
or
the
<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
active
context
</a>,
or
an
<a class="tref internalDFN" title="array" href="#dfn-array">
array
</a>
composed
of
any
of
the
previous
allowed
<del class="diff-old">values.
</del>
<ins class="diff-chg">values
except
</ins><a class="tref internalDFN" title="null" href="#dfn-null"><ins class="diff-chg">
null
</ins></a>.
</p>
<p>
If
the
<a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">
expanded
term
definition
</a>
contains
the
<code>
@type
</code>
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>,
its
value
<em class="rfc2119" title="must">
must
</em>
be
an
<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
absolute
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>,
a
<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
compact
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>,
a
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
defined
in
the
defining
<a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">
context
definition
</a>
or
the
<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
active
context
</a>,
or
the
<code>
@id
</code>
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>.
</p>
<p>
If
the
<a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">
expanded
term
definition
</a>
contains
the
<code>
@language
</code>
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>,
its
value
<em class="rfc2119" title="must">
must
</em>
have
the
lexical
form
described
in
[
<cite>
<a class="bibref" href="#bib-BCP47">
BCP47
</a>
</cite>
]
or
be
<a class="tref internalDFN" title="null" href="#dfn-null">
null
</a>.
</p>
<p>
If
the
<a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">
expanded
term
definition
</a>
contains
the
<code>
@container
</code>
<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
keyword
</a>,
its
value
<em class="rfc2119" title="must">
must
</em>
be
either
<code>
@list
</code>,
<code>
@set
</code>,
<code>
@language
</code>,
<code>
<del class="diff-old">@annotation
</del>
<ins class="diff-chg">@index
</ins>
</code>,
or
be
<a class="tref internalDFN" title="null" href="#dfn-null">
null
</a>.
If
the
value
is
<code>
@language
</code>,
when
the
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
is
used
outside
of
the
<code>
@context
</code>,
the
associated
value
<em class="rfc2119" title="must">
must
</em>
be
a
<a class="tref internalDFN" title="language_map" href="#dfn-language_map">
language
map
</a>.
If
the
value
is
<code>
<del class="diff-old">@annotation
</del>
<ins class="diff-chg">@index
</ins>
</code>,
when
the
<a class="tref internalDFN" title="term" href="#dfn-term">
term
</a>
is
used
outside
of
the
<code>
@context
</code>,
the
associated
value
<em class="rfc2119" title="must">
must
</em>
be
an
<del class="diff-old">annotation
</del>
<a class="tref internalDFN" title="index_map" href="#dfn-index_map">
<ins class="diff-chg">index
</ins>
map
</a>.
</p>
<p>
<a class="tref internalDFN" title="term" href="#dfn-term">
Terms
</a>
<em class="rfc2119" title="must not">
must
not
</em>
be
used
in
a
circular
manner.
That
is,
the
definition
of
a
term
cannot
depend
on
the
definition
of
another
term
if
that
other
term
also
depends
on
the
first
term.
</p>
<p>
See
<a href="#the-context" class="sec-ref">
<span class="secno">
5.1
</span>
<span class="sec-title">
The
Context
</span>
</a>
<del class="diff-old">and
6.5
Expanded
Term
Definition
</del>
for
further
discussion
on
contexts.
</p>
</section>
</section>
<section class="appendix normative" id="relationship-to-rdf">
<h2>
<span class="secno">
C.
</span>
Relationship
to
RDF
</h2>
<p>
The
RDF
data
model,
as
outlined
in
[
<cite>
<a class="bibref" href="#bib-RDF-CONCEPTS">
RDF-CONCEPTS
</a>
</cite>
],
is
an
abstract
syntax
for
representing
a
directed
graph
of
information.
It
is
a
subset
of
<a class="tref internalDFN" title="json-ld_data_model" href="#dfn-json-ld_data_model">
JSON-LD's
data
model
</a>
with
a
few
additional
constraints.
The
differences
between
the
two
data
models
are:
</p>
<ul>
<li>
In
JSON-LD
<a class="tref internalDFN" title="graph_name" href="#dfn-graph_name">
graph
names
</a>
can
be
<a class="tref internalDFN" title="iri" href="#dfn-iri">
IRIs
</a>
or
<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
blank
nodes
</a>
whereas
in
RDF
graph
names
have
to
be
<a class="tref internalDFN" title="iri" href="#dfn-iri">
IRIs
</a>.
</li>
<li>
In
JSON-LD
<a class="tref internalDFN" title="property" href="#dfn-property">
properties
</a>
can
be
<a class="tref internalDFN" title="iri" href="#dfn-iri">
IRIs
</a>
or
<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
blank
nodes
</a>
whereas
in
RDF
properties
(predicates)
have
to
be
<a class="tref internalDFN" title="iri" href="#dfn-iri">
IRIs
</a>.
</li>
<li>
In
<del class="diff-old">contrast
to
RDF
graphs
JSON-LD
graphs
support
unconnected
nodes
,
i.e.,
nodes
which
are
not
connected
to
any
other
node.
In
</del>
JSON-LD
lists
are
part
of
the
data
model
whereas
in
RDF
they
are
part
of
a
vocabulary,
namely
[
<cite>
<a class="bibref" href="#bib-RDF-SCHEMA">
RDF-SCHEMA
</a>
</cite>
].
</li>
<li>
RDF
values
are
either
typed
<em>
literals
</em>
(
<a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">
typed
values
</a>
)
or
<em>
language-tagged
strings
</em>
(
<a class="tref internalDFN" title="language-tagged_string" href="#dfn-language-tagged_string">
language-tagged
strings
</a>
)
whereas
JSON-LD
also
supports
JSON's
native
data
types,
i.e.,
<a class="tref internalDFN" title="number" href="#dfn-number">
number
</a>,
<a class="tref internalDFN" title="string" href="#dfn-string">
strings
</a>,
and
the
boolean
values
<a class="tref internalDFN" title="true" href="#dfn-true">
true
</a>
and
<a class="tref internalDFN" title="false" href="#dfn-false">
false
</a>.
The
JSON-LD
<ins class="diff-new">Algorithms
and
</ins>
API
<ins class="diff-new">specification
</ins>
[
<cite>
<a class="bibref" href="#bib-JSON-LD-API">
JSON-LD-API
</a>
</cite>
]
<del class="diff-old">specification
</del>
defines
the
conversion
rules
between
JSON's
native
data
types
and
RDF's
counterparts
to
allow
full
round-tripping.
</li>
</ul>
<p>
Summarized
these
differences
mean
that
JSON-LD
is
capable
of
serializing
any
RDF
graph
or
dataset
and
most,
but
not
all,
JSON-LD
documents
can
be
transformed
to
RDF.
A
complete
description
of
the
algorithms
to
convert
from
RDF
to
JSON-LD
and
from
JSON-LD
to
RDF
is
included
in
the
JSON-LD
<ins class="diff-new">Algorithms
and
</ins>
API
<ins class="diff-new">specification
</ins>
[
<cite>
<a class="bibref" href="#bib-JSON-LD-API">
JSON-LD-API
</a>
</cite>
<del class="diff-old">]
specification.
</del>
<ins class="diff-chg">].
</ins>
</p>
<p>
Even
though
JSON-LD
serializes
RDF
datasets,
it
can
also
be
used
as
a
RDF
graph
source.
In
that
case,
a
consumer
<em class="rfc2119" title="must">
must
</em>
only
use
the
default
graph
and
ignore
all
named
graphs.
This
allows
servers
to
expose
data
in,
e.g.,
both
Turtle
and
JSON-LD
using
content
negotiation.
</p>
<div class="note">
<div class="note-title">
<span>
Note
</span>
</div>
<p class="">
Publishers
supporting
both
dataset
and
graph
syntaxes
have
to
ensure
that
the
primary
data
is
stored
in
the
default
graph
to
enable
consumers
that
do
not
support
datasets
to
process
the
information.
</p>
</div>
</section>
<section class="appendix informative" id="relationship-to-other-linked-data-formats">
<h2>
<span class="secno">
D.
</span>
Relationship
to
Other
Linked
Data
Formats
</h2>
<p>
<em>
This
section
is
non-normative.
</em>
</p>
<p>
The
JSON-LD
markup
examples
below
demonstrate
how
JSON-LD
can
be
used
to
express
semantic
data
marked
up
in
other
linked
data
formats
such
as
Turtle,
RDFa,
Microformats,
and
Microdata.
These
sections
are
merely
provided
as
evidence
that
JSON-LD
is
very
flexible
in
what
it
can
express
across
different
<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
Linked
Data
</a>
approaches.
</p>
<section id="turtle">
<h3>
<span class="secno">
D.1
</span>
Turtle
</h3>
<p>
<em>
This
section
is
non-normative.
</em>
</p>
<p>
The
following
are
examples
of
converting
RDF
expressed
in
[
<cite>
<a class="bibref" href="#bib-TURTLE-TR">
TURTLE-TR
</a>
</cite>
]
into
JSON-LD.
</p>
<section id="prefix-definitions">
<h4>
<span class="secno">
D.1.1
</span>
Prefix
definitions
</h4>
<p>
<em>
This
section
is
non-normative.
</em>
</p>
<p>
The
JSON-LD
context
has
direct
equivalents
for
the
Turtle
<code>
@prefix
</code>
declaration:
</p>
<del class="diff-old">@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
</del>
<div class="example"><div class="example-title"><span>Example 57</span>: A set of statements serialized in Turtle</div><pre class="example">@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
&lt;http://manu.sporny.org/i/public&gt; a foaf:Person;
<del class="diff-old">  foaf:name &quot;Manu Sporny&quot;;
</del>
<ins class="diff-chg">  foaf:name "Manu Sporny";
</ins>
foaf:homepage
&lt;http://manu.sporny.org/&gt;
.
</pre>
</div>
<del class="diff-old">{
  &quot;@context&quot;:
</del>
<div class="example"><div class="example-title"><span>Example 58</span>: The same set of statements serialized in JSON-LD</div><pre class="example">{
<ins class="diff-chg">  "@context":
</ins>
  {
<del class="diff-old">    &quot;foaf&quot;: &quot;http://xmlns.com/foaf/0.1/&quot;
</del>
<ins class="diff-chg">    "foaf": "http://xmlns.com/foaf/0.1/"
</ins>
  },
<del class="diff-old">  &quot;@id&quot;: &quot;http://manu.sporny.org/i/public&quot;,
  &quot;@type&quot;: &quot;foaf:Person&quot;,
  &quot;foaf:name&quot;: &quot;Manu Sporny&quot;,
  &quot;foaf:homepage&quot;: { &quot;@id&quot;: &quot;http://manu.sporny.org/&quot; }
</del>
<ins class="diff-chg">  "@id": "http://manu.sporny.org/i/public",
  "@type": "foaf:Person",
  "foaf:name": "Manu Sporny",
  "foaf:homepage": { "@id": "http://manu.sporny.org/" }
</ins>
}
</pre>
</div>
<div class="note">
<div class="note-title">
<span>
Note
</span>
</div>
<p class="">
JSON-LD
has
no
equivalent
for
the
Turtle
<code>
@base
</code>
<del class="diff-old">declaration.
</del>
<ins class="diff-chg">declaration,
but
can
use
a
prefix
such
as
</ins><code><ins class="diff-chg">
base
</ins></code><ins class="diff-chg">
to
encode
the
information
in
the
document.
</ins>
</p>
</div>
</section>
<section id="embedding-1">
<h4>
<span class="secno">
D.1.2
</span>
Embedding
</h4>
<p>
Both
Turtle
and
JSON-LD
allow
embedding,
although
Turtle
only
allows
embedding
of
<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
blank
nodes
</a>.
</p>
</section>
<del class="diff-old">@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
</del>
<div class="example"><div class="example-title"><span>Example 59</span>: Embedding in Turtle</div><pre class="example">@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
&lt;http://manu.sporny.org/i/public&gt;
  a foaf:Person;
<del class="diff-old">  foaf:name &quot;Manu Sporny&quot;;
</del>
<ins class="diff-chg">  foaf:name "Manu Sporny";
</ins>
foaf:knows
[
a
foaf:Person;
foaf:name
<del class="diff-old">&quot;Gregg
Kellogg&quot;
</del>
<ins class="diff-chg">"Gregg
Kellogg"
</ins>
]
.
</pre>
</div>
<del class="diff-old">{
  &quot;@context&quot;:
</del>
<div class="example"><div class="example-title"><span>Example 60</span>: Same embedding example in JSON-LD</div><pre class="example">{
<ins class="diff-chg">  "@context":
</ins>
  {
<del class="diff-old">    &quot;foaf&quot;: &quot;http://xmlns.com/foaf/0.1/&quot;
</del>
<ins class="diff-chg">    "foaf": "http://xmlns.com/foaf/0.1/"
</ins>
  },
<del class="diff-old">  &quot;@id&quot;: &quot;http://manu.sporny.org/i/public&quot;,
  &quot;@type&quot;: &quot;foaf:Person&quot;,
  &quot;foaf:name&quot;: &quot;Manu Sporny&quot;,
  &quot;foaf:knows&quot;:
</del>
<ins class="diff-chg">  "@id": "http://manu.sporny.org/i/public",
  "@type": "foaf:Person",
  "foaf:name": "Manu Sporny",
  "foaf:knows":
</ins>
  {
<del class="diff-old">    &quot;@type&quot;: &quot;foaf:Person&quot;,
    &quot;foaf:name&quot;: &quot;Gregg Kellogg&quot;
</del>
<ins class="diff-chg">    "@type": "foaf:Person",
    "foaf:name": "Gregg Kellogg"
</ins>
  }
}
</pre>
</div>
<section id="lists">
<h4>
<span class="secno">
D.1.3
</span>
Lists
</h4>
<p>
Both
JSON-LD
and
Turtle
can
represent
sequential
lists
of
values.
</p>
<del class="diff-old">@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
</del>
<div class="example"><div class="example-title"><span>Example 61</span>: A list of values in Turtle</div><pre class="example">@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
&lt;http://example.org/people#joebob&gt; a foaf:Person;
<del class="diff-old">  foaf:name &quot;Joe Bob&quot;;
</del>
<ins class="diff-chg">  foaf:name "Joe Bob";
</ins>
foaf:nick
(
<del class="diff-old">&quot;joe&quot;
&quot;bob&quot;
&quot;jaybee&quot;
</del>
<ins class="diff-chg">"joe"
"bob"
"jaybee"
</ins>
)
.
</pre>
</div>
<del class="diff-old">{
  &quot;@context&quot;:
</del>
<div class="example"><div class="example-title"><span>Example 62</span>: Same example with a list of values in JSON-LD</div><pre class="example">{
<ins class="diff-chg">  "@context":
</ins>
  {
<del class="diff-old">    &quot;foaf&quot;: &quot;http://xmlns.com/foaf/0.1/&quot;
</del>
<ins class="diff-chg">    "foaf": "http://xmlns.com/foaf/0.1/"
</ins>
  },
<del class="diff-old">  &quot;@id&quot;: &quot;http://example.org/people#joebob&quot;,
  &quot;@type&quot;: &quot;foaf:Person&quot;,
  &quot;foaf:name&quot;: &quot;Joe Bob&quot;,
  &quot;foaf:nick&quot;:
</del>
<ins class="diff-chg">  "@id": "http://example.org/people#joebob",
  "@type": "foaf:Person",
  "foaf:name": "Joe Bob",
  "foaf:nick":
</ins>
  {
<del class="diff-old">    &quot;@list&quot;: [ &quot;joe&quot;, &quot;bob&quot;, &quot;jaybee&quot; ]
</del>
<ins class="diff-chg">    "@list": [ "joe", "bob", "jaybee" ]
</ins>
  }
}
</pre>
</div>
</section>
</section>
<section id="rdfa">
<h3>
<span class="secno">
D.2
</span>
RDFa
</h3>
<p>
The
following
example
describes
three
people
with
their
respective
names
and
<del class="diff-old">homepages.
</del>
<ins class="diff-chg">homepages
in
[
</ins><cite><a class="bibref" href="#bib-RDFA-CORE"><ins class="diff-chg">
RDFA-CORE
</ins></a></cite><ins class="diff-chg">
].
</ins>
</p>
<del class="diff-old">&gt;
</del>
<div class="example"><div class="example-title"><span>Example 63</span>: RDFa fragment that describes three people</div><pre class="example">&lt;div <span class="diff">prefix="foaf: http://xmlns.com/foaf/0.1/"</span>&gt;
   &lt;ul&gt;
<del class="diff-old">      &lt;li &gt;
        &lt;a &gt;Bob&lt;/a&gt;
</del>
<ins class="diff-chg">      &lt;li <span class="diff">typeof="foaf:Person"</span>&gt;
        &lt;a <span class="diff">rel="foaf:homepage" href="http://example.com/bob/" property="foaf:name"</span>&gt;Bob&lt;/a&gt;
</ins>
      &lt;/li&gt;
<del class="diff-old">      &lt;li &gt;
        &lt;a &gt;Eve&lt;/a&gt;
</del>
<ins class="diff-chg">      &lt;li <span class="diff">typeof="foaf:Person"</span>&gt;
        &lt;a <span class="diff">rel="foaf:homepage" href="http://example.com/eve/" property="foaf:name"</span>&gt;Eve&lt;/a&gt;
</ins>
      &lt;/li&gt;
<del class="diff-old">      &lt;li &gt;
        &lt;a &gt;Manu&lt;/a&gt;
</del>
<ins class="diff-chg">      &lt;li <span class="diff">typeof="foaf:Person"</span>&gt;
        &lt;a <span class="diff">rel="foaf:homepage" href="http://example.com/manu/" property="foaf:name"</span>&gt;Manu&lt;/a&gt;
</ins>
      &lt;/li&gt;
   &lt;/ul&gt;
&lt;/div&gt;
</pre>
</div>
<p>
An
example
JSON-LD
implementation
using
a
single
<a class="tref internalDFN" title="context" href="#dfn-context">
context
</a>
is
described
below.
</p>
<del class="diff-old">{
  &quot;@context&quot;:
</del>
<div class="example"><div class="example-title"><span>Example 64</span>: Same description in JSON-LD (context shared among node objects)</div><pre class="example">{
<ins class="diff-chg">  "@context":
</ins>
  {
<del class="diff-old">    &quot;foaf&quot;: &quot;http://xmlns.com/foaf/0.1/&quot;
</del>
<ins class="diff-chg">    "foaf": "http://xmlns.com/foaf/0.1/"
</ins>
  },
<del class="diff-old">  &quot;@graph&quot;:
</del>
<ins class="diff-chg">  "@graph":
</ins>
  [
    {
<del class="diff-old">      &quot;@type&quot;: &quot;foaf:Person&quot;,
      &quot;foaf:homepage&quot;: &quot;http://example.com/bob/&quot;,
      &quot;foaf:name&quot;: &quot;Bob&quot;
</del>
<ins class="diff-chg">      "@type": "foaf:Person",
      "foaf:homepage": "http://example.com/bob/",
      "foaf:name": "Bob"
</ins>
    },
    {
<del class="diff-old">      &quot;@type&quot;: &quot;foaf:Person&quot;,
      &quot;foaf:homepage&quot;: &quot;http://example.com/eve/&quot;,
      &quot;foaf:name&quot;: &quot;Eve&quot;
</del>
<ins class="diff-chg">      "@type": "foaf:Person",
      "foaf:homepage": "http://example.com/eve/",
      "foaf:name": "Eve"
</ins>
    },
    {
<del class="diff-old">      &quot;@type&quot;: &quot;foaf:Person&quot;,
      &quot;foaf:homepage&quot;: &quot;http://example.com/manu/&quot;,
      &quot;foaf:name&quot;: &quot;Manu&quot;
</del>
<ins class="diff-chg">      "@type": "foaf:Person",
      "foaf:homepage": "http://example.com/manu/",
      "foaf:name": "Manu"
</ins>
    }
  ]
}
</pre>
</div>
</section>
<section id="microformats">
<h3>
<span class="secno">
D.3
</span>
Microformats
</h3>
<p>
The
following
example
uses
a
simple
Microformats
hCard
<ins class="diff-new">([
</ins><cite><a class="bibref" href="#bib-MICROFORMATS"><ins class="diff-new">
MICROFORMATS
</ins></a></cite><ins class="diff-new">
])
</ins>
example
to
express
how
the
Microformat
is
represented
in
JSON-LD.
</p>
<del class="diff-old">&lt;div class=&quot;vcard&quot;&gt;
 &lt;a class=&quot;url fn&quot; href=&quot;http://tantek.com/&quot;&gt;Tantek Çelik&lt;/a&gt;
</del>
<div class="example"><div class="example-title"><span>Example 65</span>: HTML fragment with a simple Microformats hCard</div><pre class="example">&lt;div class="vcard"&gt;
<ins class="diff-chg"> &lt;a class="url fn" href="http://tantek.com/"&gt;Tantek Çelik&lt;/a&gt;
</ins>
&lt;/div&gt;
</pre>
</div>
<p>
The
representation
of
the
hCard
expresses
the
Microformat
terms
in
the
<a class="tref internalDFN" title="context" href="#dfn-context">
context
</a>
and
uses
them
directly
for
the
<code>
url
</code>
and
<code>
fn
</code>
properties.
Also
note
that
the
Microformat
to
JSON-LD
processor
has
generated
the
proper
URL
type
for
<code>
http://tantek.com/
</code>.
</p>
<del class="diff-old">{
  &quot;@context&quot;:
</del>
<div class="example"><div class="example-title"><span>Example 66</span>: Same hCard representation in JSON-LD</div><pre class="example">{
<ins class="diff-chg">  "@context":
</ins>
  {
<del class="diff-old">    &quot;vcard&quot;: &quot;http://microformats.org/profile/hcard#vcard&quot;,
    &quot;url&quot;:
</del>
<ins class="diff-chg">    "vcard": "http://microformats.org/profile/hcard#vcard",
    "url":
</ins>
    {
<del class="diff-old">      &quot;@id&quot;: &quot;http://microformats.org/profile/hcard#url&quot;,
      &quot;@type&quot;: &quot;@id&quot;
</del>
<ins class="diff-chg">      "@id": "http://microformats.org/profile/hcard#url",
      "@type": "@id"
</ins>
    },
<del class="diff-old">    &quot;fn&quot;: &quot;http://microformats.org/profile/hcard#fn&quot;
</del>
<ins class="diff-chg">    "fn": "http://microformats.org/profile/hcard#fn"
</ins>
  },
<del class="diff-old">  &quot;@type&quot;: &quot;vcard&quot;,
  &quot;url&quot;: &quot;http://tantek.com/&quot;,
  &quot;fn&quot;: &quot;Tantek Çelik&quot;
</del>
<ins class="diff-chg">  "@type": "vcard",
  "url": "http://tantek.com/",
  "fn": "Tantek Çelik"
</ins>
}
</pre>
</div>
</section>
<section id="microdata">
<h3>
<span class="secno">
D.4
</span>
Microdata
</h3>
<p>
The
<del class="diff-old">microdata
</del>
<ins class="diff-chg">[
</ins><cite><a class="bibref" href="#bib-MICRODATA"><ins class="diff-chg">
MICRODATA
</ins></a></cite><ins class="diff-chg">
]
</ins>
example
below
expresses
book
information
as
a
microdata
Work
item.
</p>
<del class="diff-old">&lt;dl itemscope
    itemtype=&quot;http://purl.org/vocab/frbr/core#Work&quot;
    itemid=&quot;http://purl.oreilly.com/works/45U8QJGZSQKDH8N&quot;&gt;
</del>
<div class="example"><div class="example-title"><span>Example 67</span>: HTML fragments that describes a book using microdata</div><pre class="example">&lt;dl itemscope
<ins class="diff-chg">    itemtype="http://purl.org/vocab/frbr/core#Work"
    itemid="http://purl.oreilly.com/works/45U8QJGZSQKDH8N"&gt;
</ins>
 &lt;dt&gt;Title&lt;/dt&gt;
<del class="diff-old"> &lt;dd&gt;&lt;cite itemprop=&quot;http://purl.org/dc/terms/title&quot;&gt;Just a Geek&lt;/cite&gt;&lt;/dd&gt;
</del>
<ins class="diff-chg"> &lt;dd&gt;&lt;cite itemprop="http://purl.org/dc/terms/title"&gt;Just a Geek&lt;/cite&gt;&lt;/dd&gt;
</ins>
 &lt;dt&gt;By&lt;/dt&gt;
<del class="diff-old"> &lt;dd&gt;&lt;span itemprop=&quot;http://purl.org/dc/terms/creator&quot;&gt;Wil Wheaton&lt;/span&gt;&lt;/dd&gt;
</del>
<ins class="diff-chg"> &lt;dd&gt;&lt;span itemprop="http://purl.org/dc/terms/creator"&gt;Wil Wheaton&lt;/span&gt;&lt;/dd&gt;
</ins>
 &lt;dt&gt;Format&lt;/dt&gt;
<del class="diff-old"> &lt;dd itemprop=&quot;http://purl.org/vocab/frbr/core#realization&quot;
</del>
<ins class="diff-chg"> &lt;dd itemprop="http://purl.org/vocab/frbr/core#realization"
</ins>
     itemscope
<del class="diff-old">     itemtype=&quot;http://purl.org/vocab/frbr/core#Expression&quot;
     itemid=&quot;http://purl.oreilly.com/products/9780596007683.BOOK&quot;&gt;
  &lt;link itemprop=&quot;http://purl.org/dc/terms/type&quot; href=&quot;http://purl.oreilly.com/product-types/BOOK&quot;&gt;
</del>
<ins class="diff-chg">     itemtype="http://purl.org/vocab/frbr/core#Expression"
     itemid="http://purl.oreilly.com/products/9780596007683.BOOK"&gt;
  &lt;link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/BOOK"&gt;
</ins>
  Print
 &lt;/dd&gt;
<del class="diff-old"> &lt;dd itemprop=&quot;http://purl.org/vocab/frbr/core#realization&quot;
</del>
<ins class="diff-chg"> &lt;dd itemprop="http://purl.org/vocab/frbr/core#realization"
</ins>
     itemscope
<del class="diff-old">     itemtype=&quot;http://purl.org/vocab/frbr/core#Expression&quot;
     itemid=&quot;http://purl.oreilly.com/products/9780596802189.EBOOK&quot;&gt;
  &lt;link itemprop=&quot;http://purl.org/dc/terms/type&quot; href=&quot;http://purl.oreilly.com/product-types/EBOOK&quot;&gt;
</del>
<ins class="diff-chg">     itemtype="http://purl.org/vocab/frbr/core#Expression"
     itemid="http://purl.oreilly.com/products/9780596802189.EBOOK"&gt;
  &lt;link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/EBOOK"&gt;
</ins>
  Ebook
 &lt;/dd&gt;
&lt;/dl&gt;
</pre>
</div>
<p>
Note
that
the
JSON-LD
representation
of
the
Microdata
information
stays
true
to
the
desires
of
the
Microdata
community
to
avoid
contexts
and
instead
refer
to
items
by
their
full
<a class="tref internalDFN" title="iri" href="#dfn-iri">
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>
</a>.
</p>
<del class="diff-old">[
</del>
<div class="example"><div class="example-title"><span>Example 68</span>: Same book description in JSON-LD (avoiding contexts)</div><pre class="example">[
  {
<del class="diff-old">    &quot;@id&quot;: &quot;http://purl.oreilly.com/works/45U8QJGZSQKDH8N&quot;,
    &quot;@type&quot;: &quot;http://purl.org/vocab/frbr/core#Work&quot;,
    &quot;http://purl.org/dc/terms/title&quot;: &quot;Just a Geek&quot;,
    &quot;http://purl.org/dc/terms/creator&quot;: &quot;Whil Wheaton&quot;,
    &quot;http://purl.org/vocab/frbr/core#realization&quot;:
</del>
<ins class="diff-chg">    "@id": "http://purl.oreilly.com/works/45U8QJGZSQKDH8N",
    "@type": "http://purl.org/vocab/frbr/core#Work",
    "http://purl.org/dc/terms/title": "Just a Geek",
    "http://purl.org/dc/terms/creator": "Whil Wheaton",
    "http://purl.org/vocab/frbr/core#realization":
</ins>
    [
<del class="diff-old">      &quot;http://purl.oreilly.com/products/9780596007683.BOOK&quot;,
      &quot;http://purl.oreilly.com/products/9780596802189.EBOOK&quot;
</del>
<ins class="diff-chg">      "http://purl.oreilly.com/products/9780596007683.BOOK",
      "http://purl.oreilly.com/products/9780596802189.EBOOK"
</ins>
    ]
  },
  {
<del class="diff-old">    &quot;@id&quot;: &quot;http://purl.oreilly.com/products/9780596007683.BOOK&quot;,
    &quot;@type&quot;: &quot;http://purl.org/vocab/frbr/core#Expression&quot;,
    &quot;http://purl.org/dc/terms/type&quot;: &quot;http://purl.oreilly.com/product-types/BOOK&quot;
</del>
<ins class="diff-chg">    "@id": "http://purl.oreilly.com/products/9780596007683.BOOK",
    "@type": "http://purl.org/vocab/frbr/core#Expression",
    "http://purl.org/dc/terms/type": "http://purl.oreilly.com/product-types/BOOK"
</ins>
  },
  {
<del class="diff-old">    &quot;@id&quot;: &quot;http://purl.oreilly.com/products/9780596802189.EBOOK&quot;,
    &quot;@type&quot;: &quot;http://purl.org/vocab/frbr/core#Expression&quot;,
    &quot;http://purl.org/dc/terms/type&quot;: &quot;http://purl.oreilly.com/product-types/EBOOK&quot;
</del>
<ins class="diff-chg">    "@id": "http://purl.oreilly.com/products/9780596802189.EBOOK",
    "@type": "http://purl.org/vocab/frbr/core#Expression",
    "http://purl.org/dc/terms/type": "http://purl.oreilly.com/product-types/EBOOK"
</ins>
  }
]
</pre>
</div>
</section>
</section>
<section class="appendix informative" id="iana-considerations">
<h2>
<span class="secno">
E.
</span>
IANA
Considerations
</h2>
<p>
<em>
This
section
is
non-normative.
</em>
</p>
<p>
This
section
is
included
merely
for
standards
community
review
and
will
be
submitted
to
the
Internet
Engineering
Steering
Group
if
this
specification
becomes
a
W3C
Recommendation.
</p>
<h2 id="application-ld-json">
application/ld+json
</h2>
<dl>
<dt>
Type
name:
</dt>
<dd>
application
</dd>
<dt>
Subtype
name:
</dt>
<dd>
ld+json
</dd>
<dt>
Required
parameters:
</dt>
<dd>
None
</dd>
<dt>
Optional
parameters:
</dt>
<dd>
<dl>
<dt>
<code>
<del class="diff-old">form
Determines
the
serialization
form
for
the
JSON-LD
document.
The
only
valid
value
at
the
moment
is
expanded
.
If
no
form
is
specified
in
an
HTTP
request
header
to
an
HTTP
server,
the
server
may
choose
any
form.
If
no
form
is
specified
in
an
HTTP
response,
the
form
must
not
be
assumed
to
take
any
particular
form.
</del>
profile
</code>
</dt>
<dd>
A
whitespace-separated
list
of
IRIs
identifying
specific
constraints
or
conventions
that
apply
to
a
JSON-LD
document.
A
profile
<em class="rfc2119" title="must not">
must
not
</em>
change
the
semantics
of
the
resource
<del class="diff-old">representation
when
processed
without
profile
knowledge,
so
that
clients
both
with
and
without
knowledge
of
a
profiled
resource
can
safely
use
the
same
</del>
representation.
The
<code>
profile
</code>
parameter
<em class="rfc2119" title="may">
may
</em>
also
be
used
by
clients
to
express
their
preferences
in
the
content
negotiation
process.
It
is
<em class="rfc2119" title="recommended">
recommended
</em>
that
profile
IRIs
are
dereferenceable
and
provide
useful
documentation
at
that
<abbr title="Internationalized Resource Identifier">
IRI
</abbr>.
This
<del class="diff-old">specification,
however,
does
not
define
any
formats
</del>
<ins class="diff-chg">specification
defines
four
values
</ins>
for
<del class="diff-old">such
</del>
<ins class="diff-chg">the
</ins><code>
profile
<del class="diff-old">descriptions.
</del>
</code>
<ins class="diff-chg">parameter.
To
request
or
specify
Expanded
JSON-LD
document
form,
the
</ins><code><ins class="diff-chg">
http://www.w3.org/ns/json-ld#expanded
</ins></code><ins class="diff-chg">
URL
</ins><em class="rfc2119" title="should"><ins class="diff-chg">
should
</ins></em><ins class="diff-chg">
be
used.
To
request
or
specify
Expanded,
Flattened
JSON-LD
document
form,
the
</ins><code><ins class="diff-chg">
http://www.w3.org/ns/json-ld#expanded-flattened
</ins></code><ins class="diff-chg">
URL
</ins><em class="rfc2119" title="should"><ins class="diff-chg">
should
</ins></em><ins class="diff-chg">
be
used.
To
request
or
specify
Compacted
JSON-LD
document
form,
the
</ins><code><ins class="diff-chg">
http://www.w3.org/ns/json-ld#compacted
</ins></code><ins class="diff-chg">
URL
</ins><em class="rfc2119" title="should"><ins class="diff-chg">
should
</ins></em><ins class="diff-chg">
be
used.
To
request
or
specify
Compacted,
Flattened
JSON-LD
document
form,
the
</ins><code><ins class="diff-chg">
http://www.w3.org/ns/json-ld#compacted-flattened
</ins></code><ins class="diff-chg">
URL
</ins><em class="rfc2119" title="should"><ins class="diff-chg">
should
</ins></em><ins class="diff-chg">
be
used.
</ins>
</dd>
</dl>
</dd>
<dt>
Encoding
considerations:
</dt>
<dd>
The
same
as
the
<code>
application/json
</code>
MIME
media
type.
</dd>
<dt>
Security
considerations:
</dt>
<dd>
Since
JSON-LD
is
intended
to
be
a
pure
data
exchange
format
for
directed
graphs,
the
serialization
<em class="rfc2119" title="should not">
should
not
</em>
be
passed
through
a
code
execution
mechanism
such
as
JavaScript's
<code>
eval()
</code>
function.
It
is
<em class="rfc2119" title="recommended">
recommended
</em>
that
a
conforming
parser
does
not
attempt
to
directly
evaluate
the
JSON-LD
serialization
and
instead
purely
parse
the
input
into
a
language-native
data
structure.
<br>
<ins class="diff-new">JSON-LD
contexts
that
are
loaded
from
the
Web
over
non-secure
connections,
such
as
HTTP,
run
the
risk
of
modifying
the
JSON-LD
</ins><a class="tref internalDFN" title="active_context" href="#dfn-active_context"><ins class="diff-new">
active
context
</ins></a><ins class="diff-new">
in
a
way
that
could
compromise
security.
It
is
advised
that
any
application
that
depends
on
a
remote
context
for
mission
critical
purposes
vet
and
cache
the
remote
context
before
allowing
the
system
to
use
it.
</ins>
</dd>
<dt>
Interoperability
considerations:
</dt>
<dd>
Not
Applicable
</dd>
<dt>
Published
specification:
</dt>
<dd>
The
<a href="http://json-ld.org/spec/latest/">
JSON-LD
</a>
specification.
</dd>
<dt>
Applications
that
use
this
media
type:
</dt>
<dd>
Any
programming
environment
that
requires
the
exchange
of
directed
graphs.
Implementations
of
JSON-LD
have
been
created
for
JavaScript,
Python,
Ruby,
<del class="diff-old">PHP
</del>
<ins class="diff-chg">PHP,
</ins>
and
C++.
</dd>
<dt>
Additional
information:
</dt>
<dd>
<dl>
<dt>
Magic
number(s):
</dt>
<dd>
Not
Applicable
</dd>
<dt>
File
extension(s):
</dt>
<dd>.jsonld
</dd>
<dt>
Macintosh
file
type
code(s):
</dt>
<dd>
TEXT
</dd>
</dl>
</dd>
<dt>
Person
&amp;
email
address
to
contact
for
further
information:
</dt>
<dd>
Manu
Sporny
&lt;msporny@digitalbazaar.com&gt;
</dd>
<dt>
Intended
usage:
</dt>
<dd>
Common
</dd>
<dt>
Restrictions
on
usage:
</dt>
<dd>
None
</dd>
<dt>
Author(s):
</dt>
<dd>
Manu
Sporny,
<ins class="diff-new">Dave
Longley,
</ins>
Gregg
Kellogg,
Markus
Lanthaler,
<del class="diff-old">Dave
Longley
</del>
<ins class="diff-chg">Niklas
Lindström
</ins>
</dd>
<dt>
Change
controller:
</dt>
<dd>
W3C
</dd>
</dl>
<p>
Fragment
identifiers
used
with
<a href="#application-ld-json">
application/ld+json
</a>
resources
<em class="rfc2119" title="may">
may
</em>
identify
a
node
in
a
<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
JSON-LD
graph
</a>
expressed
in
the
resource.
This
idiom,
which
is
also
used
in
RDF
[
<cite>
<a class="bibref" href="#bib-RDF-CONCEPTS">
RDF-CONCEPTS
</a>
</cite>
],
gives
a
simple
way
to
<del class="diff-old">&quot;mint&quot;
</del>
<ins class="diff-chg">"mint"
</ins>
new,
document-local
IRIs
to
label
nodes
and
therefore
contributes
considerably
to
the
expressive
power
of
JSON-LD.
</p>
</section>
<section class="appendix informative" id="acknowledgements">
<h2>
<span class="secno">
F.
</span>
Acknowledgements
</h2>
<p>
<em>
This
section
is
non-normative.
</em>
</p>
<p>
<ins class="diff-new">The
authors
would
like
to
extend
a
deep
appreciation
and
the
most
sincere
thanks
to
Mark
Birbeck,
who
contributed
foundational
concepts
to
JSON-LD
via
his
work
on
RDFj.
JSON-LD
uses
a
number
of
core
concepts
introduced
in
RDFj,
such
as
the
context
as
a
mechanism
to
provide
an
environment
for
interpreting
JSON
data.
Mark
had
also
been
very
involved
in
the
work
on
RDFa
as
well.
RDFj
built
upon
that
work.
JSON-LD
exists
because
of
the
work
and
ideas
he
started
nearly
a
decade
ago
in
2004.
</ins></p><p>
A
large
amount
of
thanks
goes
out
to
the
JSON-LD
Community
Group
participants
who
worked
through
many
of
the
technical
issues
on
the
mailing
list
and
the
weekly
telecons
-
of
special
mention
are
<del class="diff-old">Niklas
Lindström,
</del>
François
Daoust,
<ins class="diff-new">Stéphane
Corlosquet,
</ins>
Lin
Clark,
and
Zdenko
'Denny'
Vrandečić.
<del class="diff-old">The
editors
would
like
to
thank
Mark
Birbeck,
who
provided
a
great
deal
of
the
initial
push
behind
the
JSON-LD
work
via
his
work
on
RDFj.
</del>
</p>
<p>
The
work
of
<del class="diff-old">Dave
</del>
<ins class="diff-chg">David
I.
</ins>
Lehn
and
Mike
Johnson
are
appreciated
for
reviewing,
and
performing
several
<ins class="diff-new">early
</ins>
implementations
of
the
specification.
<ins class="diff-new">Thanks
also
to
</ins>
Ian
Davis
<del class="diff-old">is
thanked
</del>
for
this
work
on
RDF/JSON.
</p>
<p>
Thanks
<del class="diff-old">also
</del>
to
<del class="diff-old">Nathan
Rixham,
Bradley
P.
Allen,
Kingsley
Idehen,
Glenn
McDonald,
</del>
<ins class="diff-chg">the
following
individuals,
in
order
of
their
first
name,
for
their
input
on
the
specification:
Adrian
Walker,
</ins>
Alexandre
Passant,
<ins class="diff-new">Andy
Seaborne,
Ben
Adida,
Blaine
Cook,
Bradley
Allen,
Brian
Peterson,
Bryan
Thompson,
Conal
Tuohy,
Dan
Brickley,
</ins>
Danny
Ayers,
<del class="diff-old">Ted
Thibodeau
Jr.,
Olivier
Grisel,
Josh
Mandel,
Eric
Prud'hommeaux,
</del>
<ins class="diff-chg">Daniel
Leja,
Dave
Reynolds,
David
I.
Lehn,
</ins>
David
Wood,
<ins class="diff-new">Dean
Landolt,
Ed
Summers,
elf
Pavlik,
Eric
Prud'hommeaux,
Fabian
Christ,
Jon
A.
Frost,
Gavin
Carothers,
Glenn
McDonald,
</ins>
Guus
Schreiber,
<ins class="diff-new">Henri
Bergius,
Jose
María
Alvarez
Rodríguez,
Ivan
Herman,
Jack
Moffitt,
Josh
Mandel,
KANZAKI
Masahide,
Kingsley
Idehen,
Kuno
Woudt,
Larry
Garfield,
Mark
Baker,
Mark
MacGillivray,
Marko
Rodriguez,
Melvin
Carvalho,
Nathan
Rixham,
Olivier
Grisel,
Paolo
Ciccarese,
</ins>
Pat
Hayes,
<ins class="diff-new">Patrick
Logan,
Pelle
Braendgaard,
Peter
Williams,
Pierre-Antoine
Champin,
Richard
Cyganiak,
Roy
T.
Fielding,
</ins>
Sandro
Hawke,
<ins class="diff-new">Srecko
Joksimovic,
Stephane
Fellah,
Steve
Harris,
Ted
Thibodeau
Jr.,
Thomas
Steiner,
Tim
Bray,
Tom
Morris,
Tristan
King,
Sergio
Fernández,
Werner
Wilms,
</ins>
and
<del class="diff-old">Richard
Cyganiak
for
their
input
on
the
specification.
</del>
<ins class="diff-chg">William
Waites
</ins>
</p>
</section>
<section id="references" class="appendix" typeof="bibo:Chapter" resource="#references" rel="bibo:chapter">
<h2>
<span class="secno">
G.
</span>
References
</h2>
<section id="normative-references" typeof="bibo:Chapter" resource="#normative-references" rel="bibo:chapter">
<h3>
<span class="secno">
G.1
</span>
Normative
references
</h3>
<dl class="bibliography" about="">
<dt id="bib-BCP47">
[BCP47]
</dt>
<dd rel="dcterms:requires">
A.
Phillips;
M.
Davis.
<a href="http://tools.ietf.org/html/bcp47">
<cite>
Tags
for
Identifying
Languages
</cite>
</a>
September
2009.
IETF
Best
Current
Practice.
URL:
<a href="http://tools.ietf.org/html/bcp47">
http://tools.ietf.org/html/bcp47
</a>
</dd>
<dt id="bib-RDF-CONCEPTS">
[RDF-CONCEPTS]
</dt>
<dd rel="dcterms:requires">
<ins class="diff-chg">Richard
Cyganiak,
David
Wood,
Editors.
</ins>
<cite>
<a href="http://www.w3.org/TR/2013/WD-rdf11-concepts-20130115/">
RDF
1.1
Concepts
and
Abstract
<del class="diff-old">Syntax
</del>
<ins class="diff-chg">Syntax.
</ins>
</a>
</cite>
<del class="diff-old">Richard
Cyganiak,
David
Wood,
Editors.
World
Wide
Web
Consortium
</del>
<ins class="diff-chg">15
January
2013.
W3C
Working
Draft
</ins>
(work
in
progress).
<del class="diff-old">30
May
2012.
Editor's
Draft.
This
edition
of
the
JSON-LD
Syntax
specification
is
http://www.w3.org/TR/2011/WD-rdf11-concepts-20110830/.
The
latest
edition
of
the
JSON-LD
Syntax
</del>
<ins class="diff-chg">URL:
</ins><a href="http://www.w3.org/TR/2013/WD-rdf11-concepts-20130115/"><ins class="diff-chg">
http://www.w3.org/TR/2013/WD-rdf11-concepts-20130115/
</ins>
</a>
<del class="diff-old">is
available
at
http://www.w3.org/TR/rdf11-concepts/
</del>
</dd>
<dt id="bib-RFC2119">
[RFC2119]
</dt>
<dd rel="dcterms:requires">
S.
Bradner.
<a href="http://www.ietf.org/rfc/rfc2119.txt">
<cite>
Key
words
for
use
in
RFCs
to
Indicate
Requirement
Levels.
</cite>
</a>
March
1997.
Internet
RFC
2119.
URL:
<a href="http://www.ietf.org/rfc/rfc2119.txt">
http://www.ietf.org/rfc/rfc2119.txt
</a>
</dd>
<dt id="bib-RFC3987">
[RFC3987]
</dt>
<dd rel="dcterms:requires">
M.
Dürst;
M.
Suignard.
<a href="http://www.ietf.org/rfc/rfc3987.txt">
<cite>
Internationalized
Resource
Identifiers
(IRIs).
</cite>
</a>
January
2005.
Internet
RFC
3987.
URL:
<a href="http://www.ietf.org/rfc/rfc3987.txt">
http://www.ietf.org/rfc/rfc3987.txt
</a>
</dd>
<dt id="bib-RFC4627">
[RFC4627]
</dt>
<dd rel="dcterms:requires">
D.
Crockford.
<a href="http://www.ietf.org/rfc/rfc4627.txt">
<cite>
The
application/json
Media
Type
for
JavaScript
Object
Notation
(JSON)
</cite>
</a>
July
2006.
Internet
RFC
4627.
URL:
<a href="http://www.ietf.org/rfc/rfc4627.txt">
http://www.ietf.org/rfc/rfc4627.txt
</a>
</dd>
<dt id="bib-RFC5988">
[RFC5988]
</dt>
<dd rel="dcterms:requires">
<ins class="diff-chg">M.
Nottingham,
Editor.
</ins>
<cite>
<a href="http://tools.ietf.org/rfc/rfc5988">
Web
Linking
</a>.
</cite>
<del class="diff-old">M.
Nottingham.
Editor.
</del>
October
2010.
<del class="diff-old">IETF
Standard.
</del>
<ins class="diff-chg">Internet
RFC
5988.
</ins>
URL:
<a href="http://tools.ietf.org/rfc/rfc5988.txt">
http://tools.ietf.org/rfc/rfc5988.txt
</a>
</dd>
</dl>
</section>
<section id="informative-references" typeof="bibo:Chapter" resource="#informative-references" rel="bibo:chapter">
<h3>
<span class="secno">
G.2
</span>
Informative
references
</h3>
<dl class="bibliography" about="">
<dt id="bib-JSON-LD-API">
[JSON-LD-API]
</dt>
<dd rel="dcterms:references">
<ins class="diff-chg">Markus
Lanthaler,
Gregg
Kellogg,
Manu
Sporny,
Editors.
</ins>
<cite>
<del class="diff-old">The
</del>
<a href="http://json-ld.org/spec/latest/json-ld-api/">
JSON-LD
<del class="diff-old">API
</del>
1.0
<ins class="diff-new">Processing
Algorithms
and
API
</ins></a>.</cite><ins class="diff-new">
W3C
Editor's
Draft
(work
in
progress).
URL:
</ins><a href="http://json-ld.org/spec/latest/json-ld-api/"><ins class="diff-new">
http://json-ld.org/spec/latest/json-ld-api/
</ins>
</a>
</dd>
<dt id="bib-MICRODATA">
<ins class="diff-new">[MICRODATA]
</ins></dt><dd rel="dcterms:references"><ins class="diff-new">
Ian
Hickson,
Editor.
</ins><cite>
<a href="http://www.w3.org/TR/2012/WD-microdata-20120329/">
<ins class="diff-new">HTML
Microdata
</ins></a>.
</cite>
<del class="diff-old">Manu
Sporny,
Gregg
Kellogg,
Dave
Longley,
Markus
Lanthaler,
Editors.
World
Wide
Web
Consortium
</del>
<ins class="diff-chg">29
March
2012.
W3C
Working
Draft
</ins>
(work
in
progress).
<del class="diff-old">24
May
2012.
Editor's
Draft.
This
edition
of
the
JSON-LD
Syntax
specification
is
http://json-ld.org/spec/ED/json-ld-api/20120524/.
The
latest
edition
of
the
JSON-LD
Syntax
</del>
<ins class="diff-chg">URL:
</ins><a href="http://www.w3.org/TR/2012/WD-microdata-20120329/"><ins class="diff-chg">
http://www.w3.org/TR/2012/WD-microdata-20120329/
</ins></a></dd><dt id="bib-MICROFORMATS"><ins class="diff-chg">
[MICROFORMATS]
</ins></dt><dd rel="dcterms:references"><a href="http://microformats.org"><cite><ins class="diff-chg">
Microformats
</ins></cite></a>.<ins class="diff-chg">
URL:
</ins><a href="http://microformats.org"><ins class="diff-chg">
http://microformats.org
</ins>
</a>
<del class="diff-old">is
available
at
http://json-ld.org/spec/latest/json-ld-api/
</del>
</dd>
<dt id="bib-RDF-SCHEMA">
[RDF-SCHEMA]
</dt>
<dd rel="dcterms:references">
Dan
Brickley;
Ramanathan
V.
Guha.
<a href="http://www.w3.org/TR/2004/REC-rdf-schema-20040210">
<cite>
RDF
Vocabulary
Description
Language
1.0:
RDF
Schema.
</cite>
</a>
10
February
2004.
W3C
Recommendation.
URL:
<a href="http://www.w3.org/TR/2004/REC-rdf-schema-20040210">
http://www.w3.org/TR/2004/REC-rdf-schema-20040210
</a>
</dd>
<dt id="bib-RDFA-CORE">
[RDFA-CORE]
</dt>
<dd rel="dcterms:references">
Shane
McCarron;
et
al.
<a href="http://www.w3.org/TR/2012/REC-rdfa-core-20120607/">
<cite>
RDFa
Core
1.1:
Syntax
and
processing
rules
for
embedding
RDF
through
attributes.
</cite>
</a>
7
June
2012.
W3C
Recommendation.
URL:
<a href="http://www.w3.org/TR/2012/REC-rdfa-core-20120607/">
http://www.w3.org/TR/2012/REC-rdfa-core-20120607/
</a>
</dd>
<dt id="bib-TURTLE-TR">
[TURTLE-TR]
</dt>
<dd rel="dcterms:references">
Eric
Prud'hommeaux,
Gavin
<del class="diff-old">Carothers.
</del>
<ins class="diff-chg">Carothers,
Editors.
</ins>
<cite>
<a href="http://www.w3.org/TR/2011/WD-turtle-20110809/">
Turtle:
Terse
RDF
Triple
Language.
</a>
</cite>
09
August
2011.
W3C
Working
<del class="diff-old">Draft.
</del>
<ins class="diff-chg">Draft
(work
in
progress).
</ins>
URL:
<a href="http://www.w3.org/TR/2011/WD-turtle-20110809/">
http://www.w3.org/TR/2011/WD-turtle-20110809/
</a>
</dd>
</dl>
</section>
</section>
</body>
</html>
